Als Sysadmin/Admin/Webmaster unter Linux braucht man regelmäßig Tools und Anwendungen auf der Konsole zur Datenkompression und Archivierung. Logfiles, Dumps aus Datenbanken und fast alle Textfiles lassen sich meist bis ein ein Zehntel ihrer Größe oder weniger zusammenschrumpfen und insbesondere tar (von Englisch “tar”: Teer) ist ein mächtiges Werkzeug auf der Kommandozeile, um große Archive zu erstellen. Nachfolgend die wichtigsten Befehle unter Linux zur Erstellung von Archiven, Komprimieren und Dekomprimieren von Dateien.
tar
Mit dem Befehl tar werden Dateien und/oder ganze Verzeichnisse zu einer einzelnen Archivdatei zusammengefasst. Dabei bleiben Verzeichnisstruktur, Rechte und der Eigentümer der Dateien/Verzeichnisse erhalten, der Inhalt wird aber standardmäßig nicht komprimiert. AberTar gilt traditionell als das bevorzugte Archivierungsformat unter Linux und läßt sich auch einfach mit verschiedenen Kompressoren kombinieren.
Tar-Archiv entpacken:
tar xfv Archiv.tar
Bedeutung: x steht für extract (entpacken), f für file (aus der Datei) und v für verbose (mit Rückmeldung an die Konsole).
Um ein eigenes Tar-Archiv aus Verzeichnisen/Dateien zu erzeugen benutzt man statt dem x ein c (create).
tar cfv Archiv.tar Verzeichnis1 Verzeichnis2 Datei1 Datei2
Inhalt eines Archives auflisten mit t:
tar tfv Archiv.tar
gz
gz als Suffix einer Datei weist darauf hin, das diese Datei mit gzip komprimiert wurde. Allerdings kann damit jeweils nur eine einzelne Datei komprimiert werden. Will man mehrere Dateien oder gar ein ganzes Verzeichnisse packen, muss man vorher mittels tar ein Archiv erstellen (siehe oben).
Datei mit gz zu komprimieren :
gzip Datei
Resultat ist eine Datei mit dem Namen Datei.gz. Um diese wieder zu dekomprimieren mit:
gunzip Datei.gz
Das Ergebnis ist wieder die ursprüngliche Datei. Man kann das beides ebenfalls mit tar erledigen:
tar cfvz Archiv.tar.gz Verzeichnis Datei
tar xfvz Datei.tar.gz
Ein Archiv mit der Endung .tgz, bedeutet es nichts anderes als tar.gz.
bz2 (bzip2)
bz2 ist dem gz sehr ähnlich und hat fast dieselbe Syntax. Allerdings erzeugt bz2 wesentlich stärker komprimierte Dateien als gz und wird daher meist bevorzugt.
Um eine Datei mit bz2 zu packen:
bzip2 Datei
Ergebnis ist eine Datei namens Datei.bz2. Das Entpacken funktioniert mit:
bunzip2 Datei.bz2
Alles geht auch wieder direkt mit tar komprimierte Archive erzeugen oder entpacken:
tar cfvj Archiv.tar.bz2 Verzeichnis Datei
tar xfvj Archiv.tar.bz2
Und wenn dann doch irgendwann einmal eine Datei mit dem tar-Befehl nicht dekomprimierbar ist, existiert noch diese deutlich kompliziertere Methode zum Entpacken:
gzip -dc Datei.tar.gz | tar xfv -
Mit dem ersten Befehl wird die Datei entpackt und anschließend das Resultat auf eine sogenannte Pipe geschickt ( Dazu benutzt man dieses Zeichen: "|"
). Das nimmt tar von der Pipe entgegen und dekomprimiert sie. Die Pipe funktioniert wie eine Art Durchreiche – die Ausgabe des einen Befehls wird zur Eingabe des nächsten.
Achtung! Bei einem Minus vor einem tar-Befehl muss die Dateinamensangabe (f) am Ende stehen, also z. B. tar -xvf Archiv.tar. Sonst gibt’s nur eine Fehlermeldung.
zip
Zip-Dateien erfreuen sich bis heute hauptsächlich unter Windows großer beliebtheit. Da Linux, OSX und Windows, das Zip-Format Standardmäßig packen/entpacken können, eignet es sich besonders für den Datenaustausch zwischen den gängisten Betriebssystemen.
Eine einzelne Dateien packt man in ein Archiv mit:
zip Archiv.zip Datei1 Datei2
Ein komplettes Verzeichnisse einfach mit eine Rekursion (alle Dateien und Verzeichnisse, Unterverzechnisse und Dateien darin mit der Option “r” – sogar mehrere nacheinander in ein Archiv:
zip -r Archiv.zip Verzeichnis1 Verzeichnis2
Inhalt eines Zip-Archives auflisten mit:
unzip -l Archiv.zip
Entpackt wird ein Zip-Archiv mit:
unzip Archiv.zip
Natürlich sind weitere Packer (z.B. rar, unrar) erhältlich, aber mit den oben genannten deckt man wahrscheinlich 95% aller üblichen Fälle ab. Darüber hinaus lassen sich Packer mit tar und Pipes zu mächtigen Befehlsketten und Scripten kombinieren, die sich auch zu Cron-Jobs verwursteln lassen.