Tar
aus Wikipedia, der freien Enzyklopädie
![]() |
Der korrekte Titel dieses Artikels lautet „tar“. Diese Schreibweise ist aufgrund technischer Einschränkungen nicht möglich. |
tar ist der Name eines im Unix-Umfeld sehr geläufigen Archivierungsprogramms. Außerdem wird so auch das Dateiformat bezeichnet, das von diesem Programm verwendet wird. 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 sequenziell in eine einzige Datei zu schreiben, bzw. Dateien aus selbiger wieder herzustellen. Die entstehende Datei trägt die Endung .tar (unkomprimiert) und wird auch als Tarball (dt. Teerklumpen oder Teerkugel) bezeichnet.
Der MIME-Typ für tar-Dateien ist application/x-tar.
Unter Windows können Tarballs mit 7-Zip, TUGZip oder IZArc bearbeitet werden. Viele andere gängige Archivprogramme können tar-Archive zumindest öffnen.
Inhaltsverzeichnis |
[Bearbeiten] Komprimierung
Der wahlfreie Zugriff auf einzelne Dateien ist bei tar nicht möglich, da 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.
Heute werden tar-Dateien meist komprimiert, um ihre Größe zu reduzieren. Dazu kommen üblicherweise Unix-typische Datenkompressionsprogramme wie compress, gzip oder bzip2 zum Einsatz. Der Ansatz, erst alle Dateien unkomprimiert aneinanderzuhängen, um sie dann zu komprimieren, wird als solid archiving mittlerweile auch bei anderen Archivformaten wie etwa RAR genutzt. Ein komprimierter Tarball trägt üblicherweise die Endung .tar.gz, .tgz, tar.Z, .tar.bz2 oder .tbz, wenn er mit einem der zuvor genannten Programme komprimiert wurde.
[Bearbeiten] Probleme, Alternativen
Das tar-Format erscheint in BSD4.3, ustar und pax sind in POSIX Standard. Das gebräuchliche GNU tar entspricht nicht ganz diesem Standard. Insbesondere die oft fehlende Fähigkeit, Zugriffskontrolllisten zu speichern macht tar zu einem nur eingeschränkt brauchbaren Backup-Programm. Davon abgesehen gelten die oft mangelhafte Unterstützung von Hardlinks und Sparse-Dateien als problematisch und lassen das Rückspielen von Backups manchmal zu einem Lotteriespiel werden. Es gibt neuere Entwicklungen wie star oder bsdtar, die diese Nachteile zu vermeiden versuchen.
Ein weiterer, systematisch bedingter Nachteil liegt in der Art und Weise der Kompression. Solid archiving bedingt nämlich, dass der Verlust eines einzigen Blocks den Verlust des gesamten restlichen Bandarchivs zur Folge haben kann. Auf diesem Gebiet gibt es bisher Versuche wie afio, das dateiweise komprimiert, 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 vereint die Kommandos tar und cpio über das Kommando pax.
[Bearbeiten] Einige Beispielaufrufe
Archive mit Inhalt von /etc und /home erstellen:
tar cvf foobar.tar /etc/ /home/ tar cvf - /etc /home | gzip > foobar.tar.gz tar cvf - /etc /home | bzip2 > foobar.tar.bz2
Mit GNU tar ist folgende Kurzform möglich:
tar czvf foobar.tar.gz /etc/ /home/ tar cjvf foobar.tar.bz2 /etc/ /home/
Archive entpacken:
tar xvf foobar.tar gunzip < foobar.tar.gz | tar xvf - bunzip2 < foobar.tar.bz2 | tar xvf -
Mit 'GNU tar ist folgende Kurzform möglich:
tar xzvf foobar.tar.gz tar xjvf foobar.tar.bz2
Archivinhalt ansehen:
tar tvf foobar.tar gunzip < foobar.tar.gz | tar tf - bunzip2 < foobar.tar.bz2 | tar tf -
Mit GNU tar ist folgende Kurzform möglich:
tar tzvf foobar.tar.gz tar tjvf foobar.tar.bz2
- Archive von einem Verzeichnis packen und über 'pipes' in ein anderes Verzeichnis entpacken
- tar cvf - 'directory' | ( cd 'directory'/; tar xvf -)
- Beispiel:
- ( cd /data/db2data; tar cvf - . ) | ( cd /data/db2inst1/db2data; tar xvf - )