Linux Tool der Woche: tar

Ältere Semester, die auf diesem Blog mitlesen, werden sich gewiss erinnern: Das Betriebssystem MS-DOS kannte in seinen frühen Versionen (bis und mit 3.11) nur ein simples Tool zum Archivieren von Dateien: backup. Leider kam dieses Tool mit einer äusserst spartanischen Ausstattung daher, archivierte nur auf Laufwerke fixer Grösse und war nicht in der Lage, Archive zu komprimieren. Deshalb war es eine echte Erleichterung, als 1989 das Komprimierungsprogramm PKZIP von Phil Katz auf den Markt kam. PKZIP war ein ein fantastischer Alleskönner. Es komprimierte Dateien mit verschiedenen Algorithmen, archivierte klaglos ganze Verzeichnishierarchien inklusive Dateiattribute und war sogar in der Lage, Archive zu verändern. Ausserdem gab es nicht sofort auf, wenn ein Archiv mal kaputt war! Grosse Archive konnten auf mehrere Floppies verteilt werden, und so weiter.

tar in Aktion

UNIX Anwender waren (und sind) in dieser Hinsicht viel verwöhnter. Denn hier gab es schon seit 1989 ein Hilfsprogramm zum Sichern und Archivieren ganzer Hierarchien: tar – Tape Archiver. tar ist ein echter Schwerarbeiter und obwohl das Tool ursprünglich zum Schreiben auf Bänder konzipiert war, ist es weit davon entfernt, in Rente geschickt zu werden. Ganz im Gegenteil: dank verschiedener Erweiterungen ist tar heute das universelle UNIX/Linux-Tool zum Erstellen von Datei-Archiven. Der Autor dieses Beitrages nutzt es täglich, um Archive zwischen verschiedenen Rechnern hin- und herzuschieben. Und deshalb scheint es ihm angebracht, einmal danke zu sagen und dieses grossartige Tool vorzustellen.

tar kann – wie bereits gesagt – mehrere Dateien, Verzeichnisse und auch ganze Verzeichnishierarchien in eine einzelne Archidatei zusammenkopieren. Wahlweise kann diese Archivdatei auch in verschiedenen Formaten komprimiert werden. Um beispielsweise ein Archiv aller Dokumente im eigenen Verzeichnis zu erstellen, kann folgendes Kommando eingegeben werden:

tar -c -vpzf dok.tgz Dokumente/

Was genau tut dieses Kommando? Folgendes: Es erstellt ein Archiv mit dem Namen doc.tgz. Dieses enthält nach Fertigstellung alle Dateien des Ordners Dokumente. Unterordner werden selbstverständlich mit einbezogen. Die einzelnen Flags sollen im folgenden kurz vorgestellt werden:

  • -c: Steht für Create. Erstellt ein neues Archiv. Eines der drei Kommandos -c:Create, -x:Extract und -t:List muss immer als erstes nach dem Kommando folgen.
  • -v: Verbose, zeigt Details über den Prozess an. In diesem Fall zeigt tar eine Liste aller archivierten Dateien.
  • -p: Sichert auch alle Dateiattrbute im Archiv. Dies ist sehr praktisch, wenn nach einem Wiederherstellen des Archives auch die Zugehörigkeiten und Rechte der Dateien berücksichtigt werden sollen.
  • -z: Mit diesem Flag wird das Archiv mit GZIP komprimiert.
  • -f dateiname: Schreibt das Archiv in die angegebene Datei. Wenn mit Dateien statt mit Bandlaufwerken gearbeitet werden soll, muss dieses Flag immer mit angegeben werden, denn tar war ursprünglich auf das Beschreiben von Magnetbändern ausgelegt. Diese Herkunft kann es bis heute nicht ganz verleugnen…

Nun besitzen wir also ein tar Archiv doc.tgz. Hin und wieder wird dafür auch der Begriff Tarball verwendet, weil viele Dateien einfach zusammengeklebt wurden (Tarball=Teerklumpen). Dass es sich bei unserer Datei um ein komprimiertes Tar-Archiv handelt, ist auch an der Endung der Datei zu erkennen: .tgz. Dies steht für Tar – GNUZIP. Manchmal werden auch zwei Endungen verwendet, um den Typ der Datei auszuweisen: .tar.gz. Ist ein Tar-Archiv unkomprimiert, sollte stets die Endung .tar verwendet werden.

Nun bleibt natürlich die Frage, was sich mit diesem Tarball machen lässt. Interessant sind in erster Linie zwei Kommandos: Den Inhalt eines Archivs anzeigen und ein Archiv wieder entpacken. Um den Inhalt eines Tar-Archives zu sehen, wird folgendes Kommando eingegeben:

tar -tzf dok.tgz Dokumente/

Damit erhalten wir eine Liste aller Dateien des Archives. Tipp: Geben Sie zusätzlich das -v Flag mit an, um auch die Attribute der Dateien zu sehen. Beim Blick auf die Ausgabe fällt vor allem eines auf: tar hat das Archiv mit relativen Pfadangaben erstellt, also zum Beispiel Dokumente/tradeup.sxw. Wenn wir dieses Archiv entpacken, erstellt tar im aktuellen Verzeichnis einen Ordner Dokumente in den es alle Dateien extrahiert. Das ist praktisch, denn nun können wir dieses Archiv in einem beliebigen anderen Ordner wieder auspacken:

cd /var/tmp
tar -xvpzf /home/bstocker/dok.tgz

Nun haben wir unter /var/tmp eine identische Kopie unseres Dokumentenordners. Die Ordnerstruktur und die Permissions sind beibehalten worden. Lediglich die Reihenfolge der Dateien ist unter Umständen nicht mehr gleich. Wenn auch dies berücksichtigt werden soll, kann zusätzlich das Flag -s (Same order) verwendet werden.

Und damit ist tar bereits kurz vorgestellt worden. Es muss hier betont werden: kurz. Denn tar kennt zahlreiche weitere Optionen. Es kann etwa verschiedene Komprimierungsverfahren verwenden und auch problemlos mit absoluten Pfadangaben umgehen. Archive können mit verschiedenen weitere Attributen versehen werden und es ist auch möglich, neue Dateien an ein bestehendes Archiv anzuhängen. Wer es genau wissen will, findet auf der GNU Homepage eine detaillierte Dokumentation zu tar.

tar ist zuverlässiger und äusserst robuster Freund für jeden, der regelmässig grosse Verzeichnisse archivieren oder zwischen verschiedenen Rechnern bewegen muss.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.