Einführung
In diesem Lab lernen wir, wie man Dateien und Verzeichnisse mit gängigen Linux-Befehlen wie tar, gzip und zip verpackt und komprimiert. Diese Werkzeuge sind für die Verwaltung von Daten auf Linux-Systemen unerlässlich, da sie eine effiziente Speicherung und Übertragung ermöglichen. Wir beginnen mit grundlegenden Operationen und arbeiten uns schrittweise zu komplexeren Aufgaben vor, wobei jeder Schritt im Detail erläutert wird.
Erstellen einer Beispiel-Verzeichnisstruktur
Beginnen wir damit, eine Beispiel-Verzeichnisstruktur aufzubauen. Dies hilft uns zu verstehen, wie das Verpacken und Komprimieren bei verschiedenen Dateitypen und Verzeichnisebenen 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
Hier ist eine Erklärung der einzelnen Befehle:
cd ~/project: Wechselt in das Verzeichnisprojectin Ihrem Home-Verzeichnis.mkdir -p test_dir/{subdir1,subdir2}: Erstellt ein neues Verzeichnis namenstest_dirsowie zwei Unterverzeichnissesubdir1undsubdir2. Die Option-psorgt dafür, dass notwendige Elternverzeichnisse automatisch mit erstellt werden.- Die
echo-Befehle erstellen Textdateien mit Beispielinhalt an verschiedenen Stellen innerhalb unserer neuen Struktur.
Lassen Sie uns nun die erstellte Struktur überprüfen:
tree test_dir
Falls Sie keine Ausgabe sehen oder die Fehlermeldung "command not found" erhalten, ist das kein Problem. Der Befehl tree ist eventuell nicht vorinstalliert. Sie können stattdessen ls -R test_dir verwenden, was eine ähnliche (wenn auch weniger grafische) Übersicht liefert.
Dateien verpacken mit tar
Nachdem wir unsere Struktur vorbereitet haben, lernen wir nun das Verpacken von Dateien mit dem Befehl tar. tar steht für "tape archive" (Bandarchiv) und wurde ursprünglich zur Erstellung von Archiven auf Bandlaufwerken entwickelt. Heute wird es hauptsächlich verwendet, um mehrere Dateien und Verzeichnisse in einer einzigen Datei zu bündeln.
Verpacken wir nun unser Verzeichnis test_dir:
cd ~/project
tar -cvf test_archive.tar test_dir
Die Bedeutung der Optionen im Detail:
tar: Der Befehl zum Erstellen des Archivs.-c: Diese Option steht für "create" und weist tar an, ein neues Archiv zu erstellen.-v: Steht für "verbose" (ausführlich). Damit listet tar alle Dateinamen auf, die dem Archiv hinzugefügt werden. Dies ist optional, aber hilfreich zur Kontrolle.-f: Dieser Option folgt direkt der Name der Archivdatei, die erstellt werden soll.test_archive.tar: Der Name unseres neuen Archivs. Die Endung.tarist der Standard für tar-Archive.test_dir: Das Verzeichnis, das wir in das Archiv packen möchten.
Nach der Ausführung sollten Sie eine Liste der Dateien sehen, die dem Archiv hinzugefügt wurden.
Um den Inhalt des Archivs anzusehen, ohne es zu entpacken, nutzen Sie:
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.
Dateien aus einem tar-Archiv extrahieren
Bevor wir uns der Komprimierung widmen, lernen wir, wie man Dateien wieder extrahiert. Dies ist eine grundlegende Fertigkeit im Umgang mit Archiven.
So entpacken Sie den Inhalt von test_archive.tar:
mkdir extracted_tar
tar -xvf test_archive.tar -C extracted_tar
Erläuterung der Befehle:
mkdir extracted_tar: Erstellt ein Zielverzeichnis für die entpackten Daten.tar: Das Werkzeug zum Extrahieren.-x: Steht für "extract" und weist tar an, Dateien aus einem Archiv wiederherzustellen.-v: Zeigt uns während des Vorgangs jede extrahierte Datei an.-f: Gibt die Quelldatei an, die verarbeitet werden soll.-C extracted_tar: Diese Option weist tar an, in das Verzeichnisextracted_tarzu wechseln, bevor die Dateien dort abgelegt werden.
Nach der Ausführung sehen Sie die Liste der extrahierten Dateien.
Zur Überprüfung nutzen Sie:
tree extracted_tar
Oder alternativ:
ls -R extracted_tar
Dies zeigt Ihnen die Verzeichnisstruktur und die Dateien, die sich im Archiv befanden.
Dateien komprimieren mit gzip
Da wir nun ein tar-Archiv haben, können wir es mit gzip komprimieren, um Speicherplatz zu sparen:
gzip test_archive.tar
Dieser Befehl komprimiert test_archive.tar und benennt es in test_archive.tar.gz um. Die ursprüngliche Datei test_archive.tar wird dabei durch die komprimierte Version ersetzt.
Um die Größe der komprimierten Datei zu prüfen, verwenden Sie:
ls -lh test_archive.tar.gz
Die Optionen -lh zeigen die Dateigröße in einem gut lesbaren Format an (z. B. KB, MB).
Hinweis: Die Endung .tar.gz ist sehr verbreitet, gelegentlich begegnet Ihnen auch die Kurzform .tgz, die technisch identisch ist.
Unterschied zwischen Archivierung und Komprimierung verstehen
Nachdem wir nun sowohl archiviert als auch komprimiert haben, schauen wir uns die Unterschiede und die Auswirkungen auf die Dateigröße genauer an.
Archivierung (Packaging):
- Zweck: Mehrere Dateien und Verzeichnisse in einer einzigen Datei zusammenfassen.
- Funktionsweise: Gruppiert Dateien und fügt Metadaten hinzu.
- Beispiel-Werkzeug:
tar(Tape Archive) - Ergebnis: Die Gesamtgröße des Archivs ist oft geringfügig größer als die Summe der Einzeldateien.
Komprimierung:
- Zweck: Die Dateigröße reduzieren.
- Funktionsweise: Verwendet Algorithmen, um Redundanzen in den Daten zu entfernen.
- Beispiel-Werkzeuge:
gzip,bzip2,xz - Ergebnis: Die Datei wird kleiner, muss aber vor der Verwendung wieder dekomprimiert werden.
Vergleichen wir die Größen:
## Größe des Originalverzeichnisses (reine Dateiinhalte)
echo "Size of the original directory (file content):"
find test_dir -type f -exec ls -l {} \; | awk '{total += $5} END {print total " bytes"}'
## Größe des tar-Archivs (wir erstellen es für den Vergleich neu)
tar -cvf test_archive_compare.tar test_dir
echo "Size of the tar archive:"
ls -lh test_archive_compare.tar
## Größe der komprimierten tar.gz-Datei
echo "Size of the compressed tar.gz file:"
ls -lh test_archive.tar.gz
## Zum Vergleich: Belegter Speicherplatz auf der Festplatte (inkl. Block-Padding)
echo "Disk usage of the original directory:"
du -sh test_dir
Ihnen wird Folgendes auffallen:
- Das tar-Archiv ist etwas größer als die Summe der Originaldateien. Das liegt daran, dass tar Metadaten wie Dateinamen, Berechtigungen, Zeitstempel und Verzeichnisstrukturen speichert.
- Die komprimierte
.tar.gz-Datei ist deutlich kleiner als die Originaldateien und das reine tar-Archiv. - Die Festplattenbelegung (
du) kann von der tatsächlichen Dateigröße abweichen, da sie die Blockzuordnung des Dateisystems berücksichtigt.
Die Größenzunahme beim reinen Archivieren ist normal. Das tar-Format benötigt diesen Overhead, um die Struktur beim Entpacken korrekt wiederherstellen zu können. Bei sehr kleinen Dateien fällt dies auf, bei großen Datenmengen ist der Overhead vernachlässigbar.
Die Komprimierung hingegen reduziert die Größe massiv, indem sie Wiederholungen in den Daten erkennt. Dies ist besonders effektiv bei Textdateien.
Erstellen eines komprimierten Archivs in einem Schritt
Es ist zwar wichtig, die einzelnen Schritte zu kennen, in der Praxis kombiniert man das Archivieren und Komprimieren jedoch meistens. Der Befehl tar verfügt über eine integrierte Option, um das Archiv direkt während der Erstellung mit gzip zu komprimieren.
Erstellen wir ein komprimiertes Archiv von test_dir in einem Rutsch:
cd ~/project
tar -czvf test_combined.tar.gz test_dir
Dieser Befehl ähnelt dem vorherigen, hat aber eine entscheidende Ergänzung:
-z: Diese Option weist tar an, das Archiv sofort mit gzip zu komprimieren.
Die resultierende Datei test_combined.tar.gz entspricht dem Ergebnis unserer vorherigen zwei Einzelschritte, wurde aber effizienter erstellt.
Inhalt ansehen ohne zu entpacken:
tar -tzvf test_combined.tar.gz
Das -z signalisiert tar hier, dass es sich um eine gzip-komprimierte Datei handelt.
Extrahieren aus einem komprimierten Archiv
Nun müssen wir wissen, wie wir solche kombinierten Archive wieder entpacken. Extrahieren wir den Inhalt von test_combined.tar.gz:
mkdir extracted
tar -xzvf test_combined.tar.gz -C extracted
Details zum Befehl:
mkdir extracted: Erstellt das Zielverzeichnis.tar: Das Werkzeug zum Entpacken.-x: Extrahiert die Dateien.-z: Erforderlich, da die Datei mit gzip komprimiert wurde.-v: Zeigt den Fortschritt an.-f: Gibt die Quelldatei an.-C extracted: Wechselt vor dem Entpacken in das Zielverzeichnis.
Überprüfen Sie das Ergebnis:
tree extracted
Oder:
ls -R extracted
Verwendung von zip für plattformübergreifende Kompatibilität
Während tar und gzip der Standard in der Linux-Welt sind, ist das zip-Format oft die bessere Wahl, wenn Dateien mit Windows-Systemen ausgetauscht werden sollen. Erstellen wir ein zip-Archiv:
cd ~/project
zip -r test_archive.zip test_dir
Erklärung:
zip: Der Befehl zum Erstellen des Archivs.-r: Steht für "recursive" und sorgt dafür, dass alle Unterverzeichnisse und Dateien eingeschlossen werden.test_archive.zip: Der Name der Zieldatei.test_dir: Das zu archivierende Verzeichnis.
Zum Entpacken nutzen Sie:
unzip -d unzipped_files test_archive.zip
Die Option -d gibt das Zielverzeichnis an. Falls unzipped_files nicht existiert, wird es von unzip automatisch erstellt.
Zip-Dateien haben den Vorteil, dass sie auf fast jedem Betriebssystem ohne Zusatzsoftware erkannt und geöffnet werden können.
Zusammenfassung
In diesem Lab haben wir wichtige Techniken zur Dateiverpackung und -komprimierung unter Linux kennengelernt:
- Wir haben eine Beispiel-Verzeichnisstruktur erstellt, um die Organisation von Daten zu demonstrieren.
- Wir haben
targenutzt, um Dateien ohne Komprimierung zu bündeln. - Wir haben gelernt, wie man Dateien aus tar-Archiven extrahiert.
- Wir haben
gzipeingesetzt, um die Dateigröße für Speicherung oder Transfer erheblich zu reduzieren. - Wir haben den Unterschied zwischen Archivierung (Bündelung) und Komprimierung (Verkleinerung) verstanden.
- Wir haben
tarundgzipkombiniert, um komprimierte Archive in einem einzigen Schritt zu erstellen. - Wir haben das Entpacken von komprimierten Archiven geübt.
- Schließlich haben wir
zipfür eine bessere plattformübergreifende Kompatibilität verwendet, was besonders beim Datenaustausch mit Windows-Nutzern hilfreich ist.
Diese Fertigkeiten sind für eine effiziente Dateiverwaltung unter Linux unerlässlich, insbesondere beim Umgang mit großen Datenmengen oder beim Versenden von Dateien. Denken Sie daran, dass Komprimierung wertvollen Speicherplatz spart und Übertragungen beschleunigt.
Im weiteren Umgang mit Linux werden Ihnen diese Befehle immer wieder begegnen. Üben Sie diese Operationen, um Routine im Umgang mit Archivierungstechniken zu entwickeln.



