Dateipacken und -komprimieren

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir lernen, wie man Dateien und Verzeichnisse mit gängigen Linux-Befehlen wie tar, gzip und zip paketiert und komprimiert. Diese Tools sind unerlässlich für die Verwaltung von Dateien und Verzeichnissen auf Linux-Systemen und ermöglichen es Ihnen, Daten effizient zu speichern und zu übertragen. Wir beginnen mit grundlegenden Operationen und gehen dann schrittweise zu komplexeren Aufgaben über, wobei jeder Schritt detailliert erklärt wird.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 95% ist. Es hat eine positive Bewertungsrate von 99% von den Lernenden erhalten.

Erstellen einer Beispiel-Verzeichnisstruktur

Beginnen wir damit, eine Beispiel-Verzeichnisstruktur zu erstellen, mit der wir arbeiten können. Dies wird uns helfen zu verstehen, wie das Packen und Komprimieren von Dateien mit verschiedenen Datei- und Verzeichnistypen funktioniert.

Öffnen Sie Ihr Terminal und geben Sie die folgenden Befehle ein:

cd ~/project
mkdir -p test_dir/{subdir1,subdir2}
echo "This is file 1" > test_dir/file1.txt
echo "This is file 2" > test_dir/file2.txt
echo "This is in subdir1" > test_dir/subdir1/subfile1.txt
echo "This is in subdir2" > test_dir/subdir2/subfile2.txt

Lassen Sie uns analysieren, was diese Befehle tun:

  1. cd ~/project: Dieser Befehl wechselt Ihr aktuelles Verzeichnis in den project-Ordner in Ihrem Home-Verzeichnis.
  2. mkdir -p test_dir/{subdir1,subdir2}: Dieser Befehl erstellt ein neues Verzeichnis namens test_dir und zwei Unterverzeichnisse darin: subdir1 und subdir2. Die Option -p ermöglicht es mkdir, bei Bedarf übergeordnete Verzeichnisse zu erstellen.
  3. Die echo-Befehle erstellen Textdateien mit einigen Beispielinhalten an verschiedenen Stellen in unserer neuen Verzeichnisstruktur.

Jetzt lassen Sie uns die von uns erstellte Struktur überprüfen:

tree test_dir

Wenn Sie diese Ausgabe nicht sehen oder eine Fehlermeldung wie "Befehl nicht gefunden" erhalten, keine Sorge. Der tree-Befehl ist möglicherweise nicht auf Ihrem System installiert. Sie können stattdessen ls -R test_dir verwenden, das eine ähnliche (wenn auch weniger grafische) Ausgabe liefert.

Packen von Dateien mit tar

Nachdem wir nun unsere Beispiel-Verzeichnisstruktur haben, lernen wir, wie man Dateien mit dem tar-Befehl packt. tar steht für "tape archive" (Bandarchiv) und wurde ursprünglich verwendet, um Archive auf Bandlaufwerken zu erstellen. Heute wird es üblicherweise verwendet, um mehrere Dateien und Verzeichnisse in einer einzigen Datei zusammenzufassen.

Packen wir unser test_dir:

cd ~/project
tar -cvf test_archive.tar test_dir

Lassen Sie uns diesen Befehl analysieren:

  • tar: Der Befehl, den wir verwenden, um das Archiv zu erstellen.
  • -c: Diese Option teilt tar mit, ein neues Archiv zu erstellen.
  • -v: Dies steht für "verbose" (ausführlich). Es lässt tar die Namen der Dateien ausgeben, die es zum Archiv hinzufügt. Dies ist optional, aber hilfreich, um zu sehen, was passiert.
  • -f: Dieser Option folgt der Name der Archivdatei, die wir erstellen möchten.
  • test_archive.tar: Dies ist der Name, den wir unserer neuen Archivdatei geben. Die Endung .tar ist üblich für tar-Archive.
  • test_dir: Dies ist das Verzeichnis, das wir in das Archiv packen.

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie eine Liste der Dateien sehen, die zum Archiv hinzugefügt werden.

Um den Inhalt des Archivs anzuzeigen, ohne es zu extrahieren, können Sie verwenden:

tar -tvf test_archive.tar

Dieser Befehl listet (-t) den Inhalt des Archivs ausführlich (-v) aus der Datei (-f) namens test_archive.tar auf.

Extrahieren von Dateien aus einem tar-Archiv

Bevor wir unser tar-Archiv komprimieren, lernen wir, wie man Dateien daraus extrahiert. Dies ist eine wichtige Fähigkeit, wenn man mit tar-Archiven arbeitet.

Um den Inhalt unserer test_archive.tar-Datei zu extrahieren:

mkdir extracted_tar
tar -xvf test_archive.tar -C extracted_tar

Lassen Sie uns diesen Befehl analysieren:

  • mkdir extracted_tar: Dieser Befehl erstellt ein neues Verzeichnis namens extracted_tar, in dem wir den Inhalt unseres Archivs ablegen werden.
  • tar: Der Befehl, den wir verwenden, um das Archiv zu extrahieren.
  • -x: Diese Option teilt tar mit, Dateien aus einem Archiv zu extrahieren.
  • -v: Dies macht die Operation ausführlich und zeigt uns jede Datei, während sie extrahiert wird.
  • -f: Diese Option gibt den Namen der Archivdatei an, auf die die Operation angewendet werden soll. Beim Extrahieren von Dateien sollte ihr der Pfad oder der Name der zu extrahierenden tar-Datei folgen.
  • -C extracted_tar: Diese Option teilt tar mit, in das extracted_tar-Verzeichnis zu wechseln, bevor die Dateien extrahiert werden.

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie eine Liste der extrahierten Dateien sehen.

Um die Extraktion zu überprüfen, können Sie verwenden:

tree extracted_tar

Oder wenn tree nicht verfügbar ist:

ls -R extracted_tar

Dies zeigt Ihnen die Verzeichnisstruktur und die Dateien, die sich im Archiv befanden.

Komprimieren von Dateien mit gzip

Nachdem wir nun ein tar-Archiv erstellt haben, komprimieren wir es mit gzip:

gzip test_archive.tar

Dieser Befehl komprimiert test_archive.tar und benennt es in test_archive.tar.gz um. Die ursprüngliche test_archive.tar-Datei wird durch die komprimierte Version ersetzt.

Um die Größe der komprimierten Datei zu sehen, können Sie den folgenden Befehl verwenden:

ls -lh test_archive.tar.gz

Die Optionen -lh zeigen die Dateigröße in einem menschenlesbaren Format (z. B. KB, MB usw.) an.

Es ist erwähnenswert, dass, obwohl die Endung .tar.gz üblich ist, Sie möglicherweise auch .tgz sehen, was äquivalent ist.

Unterschied zwischen Packen und Komprimieren verstehen

Nachdem wir nun sowohl das Packen als auch die Komprimierung durchgeführt haben, verstehen wir den Unterschied zwischen diesen Operationen und vergleichen die Dateigrößen.

  1. Packen (Archivieren):

    • Zweck: Mehrere Dateien und Verzeichnisse in einer einzigen Datei zusammenzufassen.
    • Was es tut: Gruppiert Dateien zusammen und fügt einige Metadaten hinzu.
    • Beispiel-Tool: tar (Tape Archive, Bandarchiv)
    • Ergebnis: Die Gesamtgröße des Archivs ist oft etwas größer als die Summe der Größen aller darin enthaltenen Dateien.
  2. Komprimieren:

    • Zweck: Die Größe einer Datei oder eines Archivs zu reduzieren.
    • Was es tut: Wendet Algorithmen an, um Redundanzen in den Daten zu entfernen und die Datei kleiner zu machen.
    • Beispiel-Tools: gzip, bzip2, xz
    • Ergebnis: Die komprimierte Datei ist kleiner als die Originaldatei, muss aber vor der Verwendung dekomprimiert werden.

Vergleichen wir die Größen unseres ursprünglichen Verzeichnisses, des tar-Archivs und der komprimierten tar.gz-Datei:

## Size of the original directory
echo "Size of the original directory:"
du -sh test_dir

## Size of the tar archive (we'll recreate it for this comparison)
tar -cvf test_archive_compare.tar test_dir
echo "Size of the tar archive:"
ls -lh test_archive_compare.tar

## Size of the compressed tar.gz file
echo "Size of the compressed tar.gz file:"
ls -lh test_archive.tar.gz

Sie werden feststellen, dass:

  1. Das tar-Archiv etwas größer ist als das ursprüngliche Verzeichnis. Dies liegt daran, dass tar einige Metadaten wie Dateinamen, Berechtigungen und Verzeichnisstrukturen zum Archiv hinzufügt.
  2. Die komprimierte tar.gz-Datei ist sowohl kleiner als das ursprüngliche Verzeichnis als auch als das tar-Archiv.

Die Größenzunahme nach dem Packen ist normal und zu erwarten. Das tar-Format fügt einen geringen Overhead hinzu, um Dateimetadaten zu speichern, die für die korrekte Wiederherstellung der Verzeichnisstruktur beim Entpacken erforderlich sind. Dieser Overhead ist für größere Verzeichnisse normalerweise vernachlässigbar, kann aber bei sehr kleinen Dateien oder Verzeichnissen bemerkbar sein.

Komprimierung hingegen reduziert die Dateigröße erheblich, indem sie Redundanzen in den Daten erkennt und entfernt. Dies ist besonders effektiv für Textdateien oder Dateien mit wiederholendem Inhalt.

Erstellen eines komprimierten Archivs in einem Schritt

Obwohl es hilfreich ist, die getrennten Schritte des Erstellens eines tar-Archivs und anschließenden Komprimierens zu verstehen, werden diese Schritte in der Praxis oft kombiniert. Der tar-Befehl hat eine integrierte Option, um das Archiv während der Erstellung mit gzip zu komprimieren.

Erstellen wir in einem Schritt ein komprimiertes tar-Archiv unseres test_dir:

cd ~/project
tar -czvf test_combined.tar.gz test_dir

Dieser Befehl ähnelt dem, den wir zuvor verwendet haben, mit einer wichtigen Ergänzung:

  • -z: Diese Option teilt tar mit, das Archiv mit gzip zu komprimieren.

Die resultierende test_combined.tar.gz-Datei ist äquivalent zu der, die wir in den vorherigen zwei Schritten erstellt haben, aber wir haben es alles auf einmal gemacht.

Um den Inhalt dieses komprimierten Archivs anzuzeigen, ohne es zu extrahieren:

tar -tzvf test_combined.tar.gz

Die -z-Option hier teilt tar mit, dass wir es mit einer mit gzip komprimierten Datei zu tun haben.

Extrahieren von Dateien aus einem komprimierten Archiv

Nachdem wir nun komprimierte Archive erstellt haben, ist es wichtig zu wissen, wie man Dateien daraus extrahiert. Extrahieren wir den Inhalt unserer test_combined.tar.gz-Datei:

mkdir extracted
tar -xzvf test_combined.tar.gz -C extracted

Lassen Sie uns diesen Befehl analysieren:

  • mkdir extracted: Dieser Befehl erstellt ein neues Verzeichnis namens extracted, in dem wir den Inhalt unseres Archivs ablegen werden.
  • tar: Der Befehl, den wir verwenden, um das Archiv zu extrahieren.
  • -x: Diese Option teilt tar mit, Dateien aus einem Archiv zu extrahieren.
  • -z: Diese Option ist erforderlich, da wir es mit einer mit gzip komprimierten Datei zu tun haben.
  • -v: Dies macht die Operation ausführlich und zeigt uns jede Datei, während sie extrahiert wird.
  • -f: Hieran folgt der Name der Archivdatei, aus der wir extrahieren möchten.
  • -C extracted: Diese Option teilt tar mit, in das extracted-Verzeichnis zu wechseln, bevor die Dateien extrahiert werden.

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie eine Liste der extrahierten Dateien sehen.

Um die Extraktion zu überprüfen, können Sie verwenden:

tree extracted

Oder wenn tree nicht verfügbar ist:

ls -R extracted

Dies zeigt Ihnen die Verzeichnisstruktur und die Dateien, die sich im Archiv befanden.

Verwendung von zip für die Plattformübergreifende Kompatibilität

Während tar und gzip in Linux- und Unix-ähnlichen Systemen üblich sind, wird das zip-Format oft für eine bessere Kompatibilität mit Windows-Systemen verwendet. Erstellen wir ein zip-Archiv unseres test_dir:

cd ~/project
zip -r test_archive.zip test_dir

So funktioniert dieser Befehl:

  • zip: Der Befehl zum Erstellen eines zip-Archivs.
  • -r: Diese Option teilt zip mit, rekursiv zu arbeiten und alle Dateien und Unterverzeichnisse einzuschließen.
  • test_archive.zip: Dies ist der Name, den wir unserer zip-Datei geben.
  • test_dir: Dies ist das Verzeichnis, das wir zum zip-Archiv hinzufügen.

Um dieses Archiv zu entpacken, können Sie verwenden:

unzip -d unzipped_files test_archive.zip

Die -d-Option gibt das Verzeichnis an, in das entpackt werden soll. Wenn unzipped_files nicht existiert, wird unzip es erstellen.

Zip-Dateien haben den Vorteil, dass sie auf praktisch allen Betriebssystemen leicht erkennbar und verwendbar sind, was sie zu einer guten Wahl für das Teilen von Dateien mit Benutzern auf verschiedenen Plattformen macht.

Zusammenfassung

In diesem Lab haben wir mehrere wichtige Techniken zum Packen und Komprimieren von Dateien gelernt, die in Linux üblich sind:

  1. Wir haben eine Beispiel-Verzeichnisstruktur erstellt, um zu zeigen, wie man Dateien und Verzeichnisse organisiert.
  2. Wir haben tar verwendet, um Dateien ohne Komprimierung zu packen. Dies ist nützlich, um mehrere Dateien und Verzeichnisse zusammenzufassen.
  3. Wir haben gelernt, wie man Dateien aus einem tar-Archiv extrahiert, eine essentielle Fähigkeit, wenn man mit gepackten Dateien arbeitet.
  4. Wir haben gzip verwendet, um Dateien zu komprimieren, was die Dateigröße für die Speicherung oder Übertragung erheblich reduzieren kann.
  5. Wir haben den Unterschied zwischen Packen und Komprimieren gelernt und deren unterschiedliche Zwecke und Anwendungsfälle verstanden.
  6. Wir haben gelernt, wie man tar und gzip kombiniert, um komprimierte Archive in einem Schritt zu erstellen, eine häufige Operation in Linux-Systemen.
  7. Wir haben das Extrahieren von Dateien aus komprimierten Archiven geübt, eine weitere entscheidende Fähigkeit, wenn man mit gepackten und komprimierten Dateien arbeitet.
  8. Schließlich haben wir zip verwendet, um Archive mit besserer plattformübergreifender Kompatibilität zu erstellen, was besonders nützlich ist, wenn man Dateien mit Windows-Benutzern teilt.

Diese Fähigkeiten sind für die effiziente Dateiverwaltung in Linux unerlässlich, insbesondere wenn man mit großen Datenmengen arbeitet oder Dateien zwischen Systemen überträgt. Denken Sie daran, dass Komprimierung die Dateigröße erheblich reduzieren kann und somit die Speicherung und Übertragung viel effizienter macht.

Wenn Sie weiterhin mit Linux arbeiten, werden Sie diese Befehle für die Verwaltung Ihrer Dateien und Verzeichnisse unschätzbar finden. Üben Sie diese Operationen, um sich in den Techniken des Dateipackens und -komprimierens zu bewähren.