Archive (tar, gzip, zip)
Dateien & Verzeichnisse
Archivieren vs. Komprimieren
Diese beiden Schritte werden oft verwechselt, sind aber getrennt. Archivieren heißt, viele Dateien und Verzeichnisse zu einer Datei zusammenzufassen – ohne die Größe zu verringern. Komprimieren heißt, Daten so zu kodieren, dass sie weniger Platz brauchen. Unter Linux ist tar das Standardwerkzeug fürs Archivieren, und es kann gleichzeitig komprimieren. Klassische .tar.gz-Dateien („Tarballs“) entstehen genau aus dieser Kombination.
tar – das Archivwerkzeug
tar hat viele Optionen, die du dir am besten in Buchstaben-Häppchen merkst. Die wichtigsten:
| Option | Bedeutung |
|---|---|
-c | create – Archiv erstellen |
-x | extract – Archiv entpacken |
-t | list – Inhalt anzeigen, ohne zu entpacken |
-z | mit gzip (de)komprimieren |
-f | file – Name der Archivdatei (muss zuletzt stehen) |
-v | verbose – zeigt jede Datei an |
Archiv erstellen
Zum Packen kombinierst du meist -czf: create, gzip, file. Danach folgt der Archivname, dann die zu packenden Dateien/Verzeichnisse:
$ tar -czf backup.tar.gz projekt/ $ tar -czvf bilder.tar.gz *.jpg # mit Anzeige (-v)
Es entsteht eine einzige, komprimierte Datei backup.tar.gz.
Archiv entpacken und ansehen
Zum Auspacken ersetzt du das c durch ein x (extract). Vorher lohnt sich ein Blick in den Inhalt mit -tzf:
$ tar -tzf backup.tar.gz # nur Inhalt auflisten projekt/ projekt/main.py projekt/readme.md $ tar -xzf backup.tar.gz # entpacken $ tar -xzf backup.tar.gz -C /tmp/ # nach /tmp entpacken
Mit -C bestimmst du das Zielverzeichnis. Ohne diese Option landet alles im aktuellen Verzeichnis.
gzip – einzelne Dateien
gzip komprimiert eine einzelne Datei und ersetzt sie dabei durch die .gz-Version. gunzip (oder gzip -d) macht es rückgängig:
$ gzip riesig.log # erzeugt riesig.log.gz, Original verschwindet $ gunzip riesig.log.gz # stellt riesig.log wieder her
Beachte: gzip kann keine mehreren Dateien bündeln – dafür ist tar zuständig. Deshalb die Kombination .tar.gz.
zip und unzip
Für den Austausch mit Windows-Nutzern ist das zip-Format praktisch, weil es dort nativ unterstützt wird. Anders als bei tar+gzip archiviert und komprimiert zip in einem Schritt. Verzeichnisse fügst du mit -r (rekursiv) hinzu:
$ zip -r projekt.zip projekt/ # Verzeichnis packen $ unzip projekt.zip # entpacken $ unzip -l projekt.zip # Inhalt nur auflisten
Welches Format wann?
- .tar.gz: Der Standard unter Linux, behält Rechte und Symlinks bei.
- .zip: Beste Wahl für den Austausch mit Windows/macOS.
- .gz allein: Nur für eine einzelne große Datei (z. B. ein Logfile).
Mit welcher Optionskombination erstellst du ein gzip-komprimiertes tar-Archiv?
Hinweis
Eine Merkhilfe für tar: „create“ und „extract“ schließen sich aus – entweder packst du (c) oder du entpackst (x). Das f mit dem Dateinamen darf nie fehlen. Damit hast du die Linux-Grundlagen durchgearbeitet – ein guter Startpunkt für eigene Experimente.