tar (Packprogramm)

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Tape Archiver)
tar
Tar-screensh.png


Screenshot der Hilfeanzeige von GNU tar

Dateiendung: .tar
MIME-Type: application/x-tar
Magische Zahl: An Offset 257 ustar\0 für POSIX Formate oder ustar\040\040\0 für GNU tar Format, tar\0 an Offset 508 für star und xstar Format

(ASCII-C-Notation)

Art: Datenarchivierung



Screenshot der Hilfeanzeige von GNU tar

tar ist ein im Unix-Umfeld sehr geläufiges Packprogramm. Das von dem Programm verwendete Dateiformat trägt ebenfalls die Bezeichnung tar.

Der Name wurde aus tape archiver (Bandarchivierer) gebildet, da mit dem Programm ursprünglich Daten auf Bandlaufwerken gesichert wurden. Gleichzeitig ist tar auch das englische Wort für Teer (mit dem Programm werden Dateien unkomprimiert zu einer Datei „zusammengeklebt“).

Tar bietet die Möglichkeit, Dateien, Verzeichnisse und andere Objekte eines Dateisystems sequenziell in eine einzige Datei zu schreiben bzw. aus selbiger wiederherzustellen. Die entstehende Datei trägt per Konvention die Endung .tar und wird im Englischen auch als Tarball (dt. Teerklumpen oder Teerkugel) bezeichnet. Solche lassen sich ebenfalls als „Filesystem in Userspace“ einbinden.

Der MIME-Typ für tar-Dateien ist application/x-tar.

Komprimierung

Zunächst werden Dateien (Kreise) mit tar gepackt, anschließend wird dieses Archiv mit gzip komprimiert.

Der wahlfreie Zugriff auf einzelne Dateien ist bei tar nicht möglich, da die Archivdateien kein Verzeichnis haben, das die Datei-Offsets zum schnellen Zugriff vorhält, wie es etwa bei Zip der Fall ist (dies bedeutet nicht, dass nicht auch einzelne Dateien aus einem Archiv entpackt werden können). Der Verzicht auf diese zusätzliche Struktur ermöglicht aber auch das einfache Vergrößern von Archiven und vor allem auch das Extrahieren von Dateien aus unvollständigen oder defekten Archiven.

Heute werden tar-Archive häufiger in tar-Dateien gefunden als auf Bändern. Diese Archiv-Dateien sind meist komprimiert, um ihre Größe zu reduzieren. Dazu kommen üblicherweise Unix-typische Packprogramme wie compress, gzip, bzip2, xz oder lzma zum Einsatz. Der Ansatz, erst alle Dateien unkomprimiert aneinanderzuhängen, um sie dann zu komprimieren, wird als solide Kompression bezeichnet und mittlerweile auch bei anderen Archivformaten wie etwa RAR oder 7-Zip genutzt. In Abhängigkeit vom verwendeten Kompressionsprogramm lauten die Dateiendungen eines Tarballs üblicherweise .tar.Z (compress), .tar.gz oder kurz .tgz (gzip), .tar.bz2 oder .tbz2 oder .tbz (bzip2) bzw. .tar.xz oder .txz (xz), oder tar.lzma (lzma).

Wenn keine solide Kompression gewünscht ist, können auch die einzelnen Dateien zunächst komprimiert und anschließend in den Tarball eingegliedert werden. Dadurch ist es weiterhin möglich, unvollständige Einzelteile eines Tar-Archivs zu entpacken, falls ein Algorithmus für solide Kompression gewählt wurde, der ein Wiederaufsetzen nach einem Defekten Block nicht beherrscht. Die Nachteile (begrenzte Dateigröße durch den notwendigen temporären Platz für die Kompression einzelner Dateien, bzw. völliges Versagen bei sich während der Archivierung ändernder Dateien) überwiegen jedoch, sodass dieser Ansatz in der Regel nicht gewählt wird. Zudem ist die Kompressionsrate normalerweise geringer als bei solider Kompression, welche auch die Attribute der Datei in die Kompression einbezieht. Hinzu kommt, dass sich nur ein geringer Geschwindigkeitsvorteil beim Entpacken einzelner Dateien ergibt, da das Archiv hierzu ohnehin sequentiell durchsucht werden muss.

Probleme und Alternativen

tar-Archive sind bei unixoiden Betriebssystemen sehr beliebt, da sie nahtlos mit vielen Eigenschaften dieser Systeme umgehen können. Im Hintergrund benutzen viele Software-Updates und Backup-Programme tar-Archive, so zum Beispiel apt-get und duplicity. Dennoch haben tar-Archive Nachteile:

Eine tar-Datei enthält im Gegensatz zu Zip-Archiven kein Inhaltsverzeichnis. Eine Software, die ein tar-Archiv verarbeiten will, muss stets die ganze Datei einlesen, um zu wissen, was sich darin befindet. Erst danach kann die Software den gewünschten Teil des Archivs extrahieren. Bei der update-Option werden neue bzw. geänderte Dateien hinten am tar-Archiv angehängt (und alte bzw. gelöschte Dateien am selben Platz beibehalten), was zwar technisch die einfachste Lösung ist, aber das Problem des fehlenden Inhaltsverzeichnisses noch verschlimmert. Diese Nachteile stammen daher, dass tar ursprünglich für die Datensicherung auf Bandlaufwerken konzipiert wurde.

Das tar-Format erschien 1979 in einem Update für UNIX Version 7, ustar und pax sind im POSIX-Standard spezifiziert. Das unter Linux gebräuchliche GNU tar entspricht nicht ganz dem POSIX-Standard. Insbesondere die oft fehlende Fähigkeit, Zugriffskontrolllisten zu speichern, machen tar und GNU tar für manche Nutzer zu nur eingeschränkt brauchbaren Datensicherungsprogrammen. Die bei manchen Implementierungen unzureichende Unterstützung von Sparse-Dateien kann zudem beim Wiedereinspielen eines Archivs zu Problemen führen. star oder bsdtar versuchen diese Nachteile zu vermeiden.

Ein weiterer, systembedingter Nachteil liegt in der Art und Weise der Kompression. Solide Kompression bedingt nämlich, dass der Verlust eines einzigen Blocks den Verlust des gesamten restlichen Bandarchivs zur Folge haben kann, falls das Kompressionsprogramm nach diesem Punkt nicht mehr synchronisieren kann. Auf diesem Gebiet gibt es bisher Versuche wie afio, das dateiweise komprimiert, aber auf einer privaten Variante des durch POSIX inzwischen als veraltet deklariertem cpio-Formats aufsetzt, und bestimmte blockweise komprimierende Algorithmen, zu denen bis zu einem gewissen Grad bzip2 bereits zählt.

Ein Unix-Kommando, welches in seinen Funktionen tar sehr ähnelt, ist cpio. Der POSIX-Standard pax gibt vor, die Kommandos tar und cpio zu vereinen und ist ein Ergebnis der sogenannten Tar-Wars, die um das Jahr 1992 geführt wurden.[1]

Anders als jar-Archive enthält ein tar-Archiv wie cpio- und zip-Archive keine Information über den Zeichensatz der Dateinamen. In der Regel wird in den Dateisystemen wie bei jar UTF-8 verwendet.

Beispielaufrufe

Archive mit Inhalt von /etc und /home erstellen:

tar cvf test.tar /etc/ /home/             # Erstellt ein neues Archiv, der Inhalt besteht aus den Verzeichnissen /etc und /home
tar cvf - /etc /home | gzip > test.tar.gz # Dasselbe, aber mittels einer [[Pipeline (Unix)|Pipe]] werden die Daten umgehend in eine komprimierte [[gzip]]-Datei umgeleitet
tar czvf test.tar.gz /etc/ /home/         # *GNU tar* Kurzform, dasselbe, aber ohne Pipe
tar -czvf test.tar.gz /etc/ /home/        # *GNU tar* Alternative: Das führende Minus kann weggelassen werden
tar --create --gzip --verbose --file test.tar.gz /etc/ /home/ # auch dieser Stil ist möglich

Archiv updaten, etwa für Backup-Zwecke:

tar uvf test.tar /etc/ /home/             # u für "Update". Neue und geänderte Dateien werden dem Archiv hinzugefügt. Gelöschte Dateien verbleiben im Archiv.
tar --update --verbose --file test.tar /etc/ /home/ # ausführliche Form

Die Update-Option funktioniert nicht bei komprimierten Archiven.

Archive entpacken:

tar xvf test.tar
gunzip < test.tar.gz | tar xvf -
tar xzvf test.tar.gz                      # *GNU tar* Kurzform
tar -xzvf test.tar.gz                     # *GNU tar* Alternative
tar -xzvf test.tar.gz --no-anchored singlefile.txt # einzelnes File auspacken

Archivinhalt ansehen:

tar tvf test.tar
gunzip < test.tar.gz | tar tf -
tar tzvf test.tar.gz                      # *GNU tar* Kurzform
tar -tzvf test.tar.gz                     # *GNU tar* Alternative

Die Schreibweise der Kommandos ohne führendes Minus ist dabei die kompatible UNIX-Syntax und sollte bevorzugt verwendet werden.

tar und Windows

Seit Windows 10 1803 wird tar mit installiert.[2] Unter älteren Windows-Versionen können die mit tar gepackten Dateien nicht direkt entpackt bzw. geöffnet werden. Dazu ist ein zusätzliches Programm notwendig. Archivprogramme wie 7-Zip, TUGZip oder IZArc können tar unter Windows entpacken, aber auch andere gängige Archivprogramme können tar-Archive öffnen.

Weblinks

Einzelnachweise