| tar (Dateiformat) | |
|---|---|
| Dateinamenerweiterung | .tar |
| Internet-Medientyp | application/x-tar |
| Einheitlicher Typbezeichner (UTI) | public.tar-archive |
| Magische Zahl | u s t a r \0 0 0 bei Byte-Offset 257 (für POSIX-Versionen)
|
| Neueste Version | verschiedene verschiedene |
| Formattyp | Archivdatei |
| Kompression | Keiner |
| Standard | POSIX seit POSIX.1, derzeit in der Definition von pax [ 7 ] |
| Offenes Format ? | Ja |
tar ist ein Dateiformat und ein Archivierungsprogramm . Das Programm fasst mehrere Dateien zu einer einzigen Archivdatei im tar-Format zusammen . Es wurde ursprünglich für die Datenspeicherung auf Magnetband entwickelt – zum Lesen und Schreiben von Daten für ein sequentielles Ein-/ Ausgabegerät ohne Dateisystem . Der Name ist eine Kurzform der Formatbezeichnung „ Tape Archive “ ( Bandarchiv ). Wird eine von tar gelesene und geschriebene Datei in einem Dateisystem gespeichert, wird sie oft als Tarball bezeichnet .
Ein Tarball enthält Metadaten für die enthaltenen Dateien, darunter Name , Eigentümer, Zeitstempel , Berechtigungen und Verzeichnisstruktur . Als Datei, die andere Dateien mit zugehörigen Metadaten enthält, ist ein Tarball nützlich für die Softwareverteilung und Datensicherung .
POSIX gab Teer zugunsten von Pax auf , dennoch ist Teer weiterhin weit verbreitet.
Geschichte
Der Befehl wurde im Januar 1979 in Unix eingeführt und ersetzte das Programm „tp“ (das wiederum „tap“ ablöste). [ 8 ] Die Dateistruktur wurde in POSIX.1-1988 [ 9 ] und später in POSIX.1-2001 [ 10 ] standardisiert und entwickelte sich zu einem Format , das von den meisten modernen Archivierungsprogrammen unterstützt wird. Der Befehl „tar“ wurde in POSIX.1-2001 zugunsten von „pax“ aufgegeben , das das Dateiformat „ustar“ unterstützen sollte. Die Abschaffung von „tar“ zugunsten von „pax“ war bereits seit 1994 angekündigt. Dennoch enthalten viele Betriebssysteme heutzutage Werkzeuge für „tar“-Dateien sowie Werkzeuge zum Komprimieren und Dekomprimieren dieser Dateien, wie beispielsweise „ xz“ , „gzip“ und „bzip2“ .
Der Befehl tar wurde auf das Betriebssystem IBM i portiert. [ 11 ]
BSD-tar ist seit 2018 in Windows verfügbar , [ 12 ] [ 13 ] und es gibt weitere Drittanbieter-Tools für Windows.
Begründung
Viele ältere Bandlaufwerke lesen und schreiben Datenblöcke variabler Länge , wodurch zwischen den Blöcken erheblicher Speicherplatz auf dem Band ungenutzt bleibt (für den Start und Stopp der Bandbewegung). Einige Bandlaufwerke (und Rohdisketten) unterstützen nur Datenblöcke fester Länge. Beim Schreiben auf beliebige Medien wie Dateisysteme oder Netzwerke ist das Schreiben eines großen Blocks zudem schneller als das Schreiben vieler kleiner Blöcke. Daher schreibt der Befehl `tar` Daten in Datensätzen von vielen 512- Byte -Blöcken. Der Benutzer kann einen Blockierungsfaktor festlegen, also die Anzahl der Blöcke pro Datensatz. Der Standardwert ist 20, was zu 10- KiB- Datensätzen führt. [ 14 ]
Dateiformat
Es gibt verschiedene Tar-Dateiformate, darunter historische und aktuelle. Zwei Tar-Formate sind in POSIX kodifiziert: ustar und pax . Das GNU-Tar-Format ist zwar nicht kodifiziert, wird aber weiterhin verwendet.
Ein Tar-Archiv besteht aus einer Reihe von Dateiobjekten, daher der gebräuchliche Begriff „Tarball“ , der sich darauf bezieht, wie ein Tarball Objekte aller Art sammelt, die an seiner Oberfläche haften. Jedes Dateiobjekt enthält die Dateidaten und wird von einem 512 Byte großen Header- Datensatz eingeleitet. Die Dateidaten werden unverändert geschrieben, lediglich ihre Länge wird auf ein Vielfaches von 512 Byte aufgerundet. Die ursprüngliche Tar-Implementierung ignorierte den Inhalt der Füllbytes und ließ die Pufferdaten unverändert, die meisten modernen Tar-Implementierungen füllen den zusätzlichen Speicherplatz jedoch mit Nullen auf. [ 15 ] Das Ende eines Archivs wird durch mindestens zwei aufeinanderfolgende, mit Nullen gefüllte Datensätze markiert. (Der Ursprung der Datensatzgröße von Tar scheint in den 512 Byte großen Festplattensektoren des Unix-Dateisystems Version 7 zu liegen.) Der letzte Block eines Archivs wird mit Nullen auf die volle Länge aufgefüllt.
Kopfzeile
Der Dateikopf enthält Metadaten über eine Datei. Um die Kompatibilität mit verschiedenen Architekturen und Byte-Reihenfolgen zu gewährleisten , werden die Informationen im Dateikopf in ASCII kodiert . Wenn also alle Dateien in einem Archiv ASCII-Textdateien mit ASCII-Namen sind, ist das Archiv im Wesentlichen eine ASCII-Textdatei (die viele Nullzeichen enthält ).
Die im ursprünglichen Unix-Tar-Format definierten Felder sind in der folgenden Tabelle aufgeführt. Die Tabelle der Link-/Dateityp-Indikatoren enthält einige moderne Erweiterungen. Nicht verwendete Felder werden mit Nullbytes aufgefüllt. Der Header belegt 257 Bytes und wird anschließend mit Nullbytes aufgefüllt, um einen 512 Byte großen Datensatz zu erhalten. Der Header enthält keine eindeutige Dateiidentifizierungsnummer.
Vor-POSIX.1-1988 (d. h. v7) tar-Header:
| Feldversatz | Feldgröße | Feld |
|---|---|---|
| 0 | 100 | Dateipfad und Name |
| 100 | 8 | Dateimodus (oktal) |
| 108 | 8 | Numerische Benutzer-ID des Eigentümers (oktal) |
| 116 | 8 | Numerische Benutzer-ID der Gruppe (oktal) |
| 124 | 12 | Dateigröße in Bytes (oktal) |
| 136 | 12 | Letzte Änderungszeit im numerischen Unix-Zeitformat (oktal) |
| 148 | 8 | Prüfsumme für Header-Datensatz |
| 156 | 1 | Linkindikator (Dateityp) |
| 157 | 100 | Name der verknüpften Datei |
Das Link- Indikatorfeld (vor POSIX.1-1988) kann folgende Werte annehmen:
| Wert | Bedeutung |
|---|---|
| '0' oder ( ASCII NUL ) | Normale Datei |
| '1' | Hardlink |
| '2' | Symbolischer Link |
Bei einigen vor POSIX.1-1988 implementierten tar-Programmen wurde ein Verzeichnis durch einen abschließenden Schrägstrich (/) im Namen gekennzeichnet.
Numerische Werte werden als Oktalzahlen mit ASCII-Ziffern und führenden Nullen kodiert . Diese Wahl mag heutzutage, wo die vierstellige Hexadezimaldarstellung aufgrund der fast immer zweistelligen Registergrößen und Adressbreiten in Computern sowie der standardisierten Byte -Größe Oktette bevorzugt wird, kontraintuitiv erscheinen. Unix wurde jedoch ursprünglich für den PDP-7 entwickelt , der eine 18-Bit-CPU und einen sechsstelligen Zeichencode verwendet , wodurch die dreistellige Oktaldarstellung sinnvoller erscheint.
Aus historischen Gründen sollte am Ende ein Nullbyte oder ein Leerzeichen verwendet werden. Obwohl 12 Byte für die Dateigröße reserviert sind, können daher nur 11 Oktalstellen gespeichert werden. Dies ergibt eine maximale Dateigröße von 8 Gigabyte für archivierte Dateien. Um diese Einschränkung zu umgehen, führte star im Jahr 2001 eine Basis-256-Kodierung ein, die durch Setzen des höchstwertigen Bits des linken Bytes eines numerischen Felds gekennzeichnet ist. GNU-tar und BSD-tar folgten diesem Ansatz. Darüber hinaus füllen Versionen von tar vor dem ersten POSIX-Standard von 1988 die Werte mit Leerzeichen anstelle von Nullen auf.
Die Prüfsumme wird berechnet, indem die Summe der vorzeichenlosen Bytewerte des Header-Datensatzes gebildet wird, wobei die acht Prüfsummenbytes als ASCII-Leerzeichen (Dezimalwert 32) interpretiert werden. Sie wird als sechsstellige Oktalzahl mit führenden Nullen, gefolgt von einem Nullbyte (NUL) und einem Leerzeichen, gespeichert. Verschiedene Implementierungen halten sich nicht an dieses Format. Darüber hinaus behandelten einige ältere tar-Implementierungen Bytes als vorzeichenbehaftet. Implementierungen berechnen die Prüfsumme üblicherweise auf beide Arten und betrachten sie als gültig, wenn entweder die Summe mit oder ohne Vorzeichen mit der angegebenen Prüfsumme übereinstimmt.
Unix-Dateisysteme unterstützen mehrere Links (Namen) für dieselbe Datei. Sind mehrere solcher Dateien in einem TAR-Archiv enthalten, wird nur die erste als normale Datei archiviert; die übrigen werden als Hardlinks archiviert, wobei das Feld „Name der verknüpften Datei“ auf den Namen der ersten Datei gesetzt wird. Beim Entpacken müssen diese Hardlinks im Dateisystem wiederhergestellt werden.
UStar-Format
Die meisten modernen tar-Programme lesen und schreiben Archive im UStar-Format ( Unix Standard TAR [ 8 ] [ 16 ] ), das 1988 mit dem POSIX IEEE P1003.1-Standard eingeführt wurde. Dieser Standard führte zusätzliche Header-Felder ein. Ältere tar-Programme ignorieren diese zusätzlichen Informationen (und extrahieren möglicherweise unvollständig benannte Dateien), während neuere Programme prüfen, ob die Zeichenkette „ustar“ vorhanden ist, um festzustellen, ob das neue Format verwendet wird.
Das UStar-Format ermöglicht längere Dateinamen und speichert zusätzliche Informationen zu jeder Datei. Die maximale Dateinamensgröße beträgt 255 Zeichen, teilt sich aber auf ein vorangestelltes Pfadpräfix („Dateinamenpräfix“) und den eigentlichen Dateinamen auf und kann daher deutlich kleiner sein. [ 17 ]
| Feldversatz | Feldgröße | Feld |
|---|---|---|
| 0 | 156 | (Mehrere Felder, genau wie im alten Format) |
| 156 | 1 | Typflagge |
| 157 | 100 | (Dasselbe Feld wie im alten Format) |
| 257 | 6 | UStar-Indikator, „ustar“, dann NUL |
| 263 | 2 | UStar-Version, "00" |
| 265 | 32 | Benutzername des Besitzers |
| 297 | 32 | Name der Eigentümergruppe |
| 329 | 8 | Hauptnummer des Geräts |
| 337 | 8 | Gerätenummer |
| 345 | 155 | Dateinamenpräfix |
Das Typkennzeichenfeld kann folgende Werte annehmen:
| Wert | Bedeutung |
|---|---|
| '0' oder ( ASCII NUL ) | Normale Datei |
| '1' | Hardlink |
| '2' | Symbolischer Link |
| '3' | Charakter-Spezial |
| '4' | Blockspezial |
| '5' | Verzeichnis |
| '6' | FIFO |
| '7' | Zusammenhängende Datei |
| 'G' | Globaler erweiterter Header mit Metadaten (POSIX.1-2001) |
| 'X' | Erweiterter Header mit Metadaten für die nächste Datei im Archiv (POSIX.1-2001) |
| 'A'–'Z' | Herstellerspezifische Erweiterungen (POSIX.1-1988) |
| Alle anderen Werte | Für zukünftige Standardisierung reserviert |
Die herstellerspezifischen Erweiterungen von POSIX.1-1988, die Link-Flag-Werte von 'A' bis 'Z' verwenden, haben bei verschiedenen Herstellern teilweise unterschiedliche Bedeutungen und gelten daher als veraltet. Sie wurden durch die POSIX.1-2001-Erweiterungen ersetzt, die auch ein Hersteller-Tag enthalten.
Der Dateityp „7“ (zusammenhängende Datei) ist im POSIX-Standard formal als reserviert gekennzeichnet, sollte aber Dateien bezeichnen, die zusammenhängend auf der Festplatte abgelegt werden sollen. Nur wenige Betriebssysteme unterstützen die explizite Erstellung solcher Dateien, weshalb die meisten Tar-Programme sie nicht unterstützen und Dateien vom Typ 7 wie Dateien vom Typ 0 (regulär) behandeln. Eine Ausnahme bilden ältere Versionen von GNU tar unter dem Betriebssystem MASSCOMP RTU (Real Time Unix), die mit dem Flag O_CTG der Funktion open() eine zusammenhängende Datei anfordern konnten. Diese Unterstützung wurde jedoch ab GNU tar Version 1.24 entfernt.
POSIX.1-2001/pax
1997 schlug Sun eine Methode zur Erweiterung des tar-Formats vor. Diese Methode wurde später in den POSIX.1-2001-Standard aufgenommen. Dieses Format ist als erweitertes tar- Format oder PAX- Format bekannt. Das neue tar-Format ermöglicht es Benutzern, beliebige herstellerspezifische Erweiterungen mit entsprechenden Tags hinzuzufügen. Die folgenden Tags sind im POSIX-Standard definiert:
- atime , mtime : Alle Zeitstempel einer Datei in beliebiger Auflösung (die meisten Implementierungen verwenden eine Nanosekunden-Granularität)
- Pfad : Pfadnamen unbegrenzter Länge und Zeichenkodierung
- linkpath : Symlink-Zielnamen unbegrenzter Länge und Zeichensatzcodierung
- uname , gname : Benutzer- und Gruppennamen unbegrenzter Länge und Zeichenkodierung
- Größe : Dateien mit unbegrenzter Größe (das historische Tar-Format ist 8 GB groß)
- uid , gid : Benutzer-ID und Gruppen-ID ohne Größenbeschränkung (das historische tar-Format ist auf eine maximale ID von 2097151 beschränkt)
- eine Zeichensatzdefinition für Pfadnamen und Benutzer-/Gruppennamen ( UTF-8 )
Im Jahr 2001 unterstützte das Star-Programm als erstes tar-Programm das neue Format. 2004 unterstützte GNU tar das neue Format [ 18 ] , obwohl es dieses noch nicht als Standardausgabe des tar-Programms verwendet. [ 19 ]
Das PAX-Format ist so konzipiert, dass alle Implementierungen, die das UStar-Format lesen können, auch das PAX-Format lesen können. Ausgenommen sind lediglich Dateien mit erweiterten Funktionen, wie z. B. längeren Dateinamen. Aus Kompatibilitätsgründen werden diese in den TAR-Dateien als spezielle Dateien xoder gTypdateien kodiert, typischerweise in einem PaxHeaders.XXXXUnterverzeichnis. [ 20 ] : exthdr.name. Eine PAX-fähige Implementierung nutzt diese Informationen, während nicht-unterstützende Implementierungen wie 7-Zip sie als zusätzliche Dateien verarbeiten. [ 21 ]
Merkmale der Archivierungsprogramme
Neben dem Erstellen und Extrahieren von Archiven variiert der Funktionsumfang der verschiedenen Archivierungsprogramme. Beispielsweise erkennen manche Programme das Format komprimierter TAR-Archive automatisch, sodass der Benutzer es nicht angeben muss, und ermöglichen es ihm, das Hinzufügen von Dateien auf solche zu beschränken, die nach einem bestimmten Datum geändert wurden. [ 22 ] [ 23 ]
Verwendung
Befehlssyntax
tar [-Optionen] <Name des tar-Archivs> [Dateien oder Verzeichnisse, die dem Archiv hinzugefügt werden sollen] Grundlegende Optionen:
-c, --create— ein neues Archiv erstellen;-a, --auto-compress— zusätzlich das Archiv mit einem Komprimierungsprogramm komprimieren, das automatisch anhand der Dateinamenerweiterung des Archivs ermittelt wird. Endet der Name des Archivs mit ,*.tar.gzdann gzip ,*.tar.xzendet er mit , dann xz ,*.tar.zstfür Zstandard usw.;-r, --append— Dateien an das Ende eines Archivs anhängen;-x, --extract, --get— Dateien aus einem Archiv extrahieren;-f, --file— den Namen des Archivs angeben;-t, --list— zeigt eine Liste der Dateien und Ordner im Archiv an;-v, --verbose— zeigt eine Liste der verarbeiteten Dateien an.
Grundlegende Verwendung
Erstelle eine Archivdatei archive.taraus der Datei README.txtund dem Verzeichnis src:
$ tar -cvf archive.tar README.txt src Extrahieren Sie den Inhalt in archive.tardas aktuelle Verzeichnis:
$ tar -xvf archive.tar Erstelle eine Archivdatei archive.tar.gzaus der Datei README.txtund dem Verzeichnis srcund komprimiere sie mit gzip :
$ tar -cavf archive.tar.gz README.txt src Extrahieren Sie den Inhalt in archive.tar.gzdas aktuelle Verzeichnis:
$ tar -xvf archive.tar.gz Tarpipe
Eine Tarpipe ist eine Methode, ein Archiv in die Standardausgabe zu schreiben und es an einen anderen Tar-Prozess über dessen Standardeingabe weiterzuleiten , der in einem anderen Verzeichnis arbeitet und es dort entpackt. Dieser Prozess kopiert den gesamten Quellverzeichnisbaum einschließlich aller speziellen Dateien, zum Beispiel:
$ tar cf - srcdir | tar x -C Zielverzeichnis Softwareverteilung
Das Tar-Format wird weiterhin häufig für die Verteilung von Open-Source -Software verwendet . *NIX-Distributionen nutzen es in verschiedenen Mechanismen zur Verteilung von Quellcode und Binärpaketen, wobei der Quellcode der meisten Software in komprimierten Tar-Archiven bereitgestellt wird.
Einschränkungen
Das ursprüngliche Tar-Format wurde in den Anfängen von Unix entwickelt, und trotz seiner heutigen weiten Verbreitung gelten viele seiner Designmerkmale als veraltet. [ 24 ]
Um die Nachteile von Teer zu beheben, wurden andere Formate entwickelt.
Dateinamen
Aufgrund der Feldgröße konnte das ursprüngliche tar-Format keine Dateipfade und -namen mit mehr als 100 Zeichen speichern.
Um dieses Problem zu beheben und gleichzeitig die Lesbarkeit für bestehende tar-Dienstprogramme zu erhalten , speichert GNU tar Dateipfade und -namen, die länger als 100 Zeichen sind, in @LongLinkEinträgen, die von tar-Dienstprogrammen, die diese Funktion nicht kennen, als normale Dateien erkannt würden. [ 25 ] Ähnlich verwendet das PAX-PaxHeaders Format Einträge. [ 26 ]
Attribute
Viele ältere tar-Implementierungen protokollieren und stellen erweiterte Attribute (xattrs) oder Zugriffskontrolllisten (ACLs) nicht wieder her . Im Jahr 2001 führte Star die Unterstützung für ACLs und erweiterte Attribute durch eigene Tags für POSIX.1-2001 pax ein. bsdtar verwendet die Star-Erweiterungen zur Unterstützung von ACLs. [ 27 ] Neuere Versionen von GNU tar unterstützen erweiterte Linux-Attribute und implementieren die Star-Erweiterungen neu. [ 28 ] Eine Reihe von Erweiterungen wird im Dateityphandbuch für BSD tar, tar(5), beschrieben. [ 27 ]
Teerbombe
Eine Tarbombe , im Hackerjargon ein Archiv (Tarball) mit einer großen Anzahl von Dateien, deren Inhalt beim Entpacken im aktuellen Verzeichnis oder einem anderen bestehenden Verzeichnis anstatt im vom Archiv speziell für die extrahierten Dateien erstellten Verzeichnis abgelegt wird. [ 29 ] Dies ist bestenfalls lästig für den Benutzer, der gezwungen ist, zahlreiche Dateien, die zwischen den übrigen Verzeichnisinhalten liegen, zu identifizieren und zu löschen. Ein solches Verhalten gilt als schlechtes Benehmen seitens des Archiverstellers.
Ein damit zusammenhängendes Problem ist die Verwendung absoluter Pfade oder Verweise auf übergeordnete Verzeichnisse beim Erstellen von TAR-Archiven. Dateien, die aus solchen Archiven extrahiert werden, werden oft an ungewöhnlichen Orten außerhalb des Arbeitsverzeichnisses erstellt und können, ähnlich wie eine TAR-Bombe, vorhandene Dateien überschreiben. Moderne Versionen von FreeBSD und GNU tar erstellen oder extrahieren jedoch standardmäßig keine absoluten Pfade und Verweise auf übergeordnete Verzeichnisse, es sei denn, dies wird explizit mit dem Flag -Poder der Option `--enable` erlaubt --absolute-names. Das Programm `bsdtar`, das ebenfalls auf vielen Betriebssystemen verfügbar und die Standardimplementierung von tar unter Mac OS X v10.6 ist, folgt ebenfalls keinen Verweisen auf übergeordnete Verzeichnisse oder symbolischen Links. [ 30 ]
Steht einem Benutzer nur ein sehr altes TAR-Archiv zur Verfügung, das diese Sicherheitsmaßnahmen nicht aufweist, lassen sich diese Probleme beheben, indem man die TAR-Datei zunächst mit dem Befehl `tar --include` untersucht tar tf archive.tar. Dieser Befehl listet den Inhalt auf und ermöglicht es, problematische Dateien anschließend auszuschließen. Er extrahiert keine Dateien, sondern zeigt lediglich die Namen aller Dateien im Archiv an. Sind problematische Dateien enthalten, kann der Benutzer ein neues, leeres Verzeichnis erstellen und das Archiv dorthin extrahieren – oder die TAR-Datei ganz vermeiden. Die meisten grafischen Programme können den Inhalt des Archivs vor dem Extrahieren anzeigen. Vim kann TAR-Archive öffnen und deren Inhalt anzeigen. Auch GNU Emacs kann ein TAR-Archiv öffnen und dessen Inhalt in einem Dired -Puffer anzeigen.
Zufälliger Zugriff
Das TAR-Format wurde ohne zentralen Index oder Inhaltsverzeichnis für Dateien und deren Eigenschaften für die Sicherung auf Bandlaufwerke entwickelt. Stattdessen werden die Metadaten jeder Datei (wie Name, Größe und Zeitstempel) in einem Header vor der jeweiligen Datei gespeichert. Das Archiv muss sequenziell gelesen werden, um Dateien aufzulisten oder zu extrahieren. Bei großen TAR-Archiven führt dies zu Leistungseinbußen, wodurch sich TAR-Archive nicht für Anwendungen eignen, die häufig den wahlfreien Zugriff auf einzelne Dateien erfordern.
Dieses Design macht Tar-Archive wiederum widerstandsfähig gegen Beschädigungen durch fehlende Teile, sowohl in Form digitaler Dateien als auch physischer Bänder. Eine verkürzte Tar-Datei mit fehlenden Teilen an beiden Enden ermöglicht dennoch die Wiederherstellung der nicht fehlenden Teile, einschließlich Dateipfade, Dateinamen und Metadaten, indem man vom ersten nicht fehlenden Tar-Header ausgeht. [ 31 ]
Bei einer korrekt formatierten TAR-Datei, die auf einem Medium mit Suchfunktion (d. h. effizientem, wahlfreiem Lesen) gespeichert ist, tarkann das Programm die gesuchte Datei relativ schnell (in linearer Zeit bezogen auf die Dateianzahl) finden, indem es Lesevorgänge anhand des Felds „size“ in den Dateiköpfen überspringt. Dies ist die Grundlage für die Option -nin GNU tar. Wird eine TAR-Datei als Ganzes komprimiert, verhindert das üblicherweise nicht suchfähige Komprimierungsformat diese Optimierung. [ 32 ] Um die Suchfunktion zu erhalten, müssen TAR-Dateien außerdem korrekt verkettet werden, indem der abschließende Nullblock am Ende jedes Archivs entfernt wird. [ 33 ]
Duplikate
Ein weiteres Problem des TAR-Formats besteht darin, dass mehrere (möglicherweise unterschiedliche) Dateien in einem Archiv identische Pfade und Dateinamen haben können. Beim Entpacken eines solchen Archivs wird die ältere Version einer Datei üblicherweise durch die neuere Version überschrieben.
Dadurch kann eine nicht explizite (nicht offensichtliche) Tarbombe entstehen, die technisch gesehen keine Dateien mit absoluten Pfaden oder Verweisen auf übergeordnete Verzeichnisse enthält, aber dennoch das Überschreiben von Dateien außerhalb des aktuellen Verzeichnisses verursacht (beispielsweise kann das Archiv zwei Dateien mit demselben Pfad und Dateinamen enthalten, von denen die erste ein symbolischer Link zu einem Ort außerhalb des aktuellen Verzeichnisses ist und die zweite eine reguläre Datei; dann kann das Extrahieren eines solchen Archivs bei einigen Tar-Implementierungen dazu führen, dass an den Ort geschrieben wird, auf den der symbolische Link verweist).
Wichtige Implementierungen
Historisch gesehen haben viele Systeme tar implementiert, und viele gängige Dateiarchivierungsprogramme bieten zumindest teilweise Unterstützung für tar (oft mithilfe einer der unten aufgeführten Implementierungen). Die Geschichte von tar ist geprägt von Inkompatibilitäten, den sogenannten „tar-Kriegen“. Die meisten tar-Implementierungen können auch cpio- und pax-Dateien lesen und erstellen (letzteres ist ein tar -Format mit POSIX -2001-Erweiterungen).
Wichtigste Implementierungen in der Reihenfolge ihres Ursprungs:
- Solaris tar, based on the original Unix V7 tar and comes as the default on the Solaris operating system
- GNU tar is the default on most Linux distributions. It is based on the public domain implementation pdtar which started in 1987. Recent versions can use various formats, including ustar, pax, GNU and v7 formats.
- FreeBSD tar (also BSD tar) has become the default tar on most Berkeley Software Distribution-based operating systems including Mac OS X. The core functionality is available as libarchive for inclusion in other applications. This implementation automatically detects the format of the file and can extract from tar, pax, cpio, zip, rar, ar, xar, rpm and ISO 9660 cdrom images. It also comes with a functionally equivalent cpio command-line interface.
- Schily tar, better known as star (/ˈɛsˌtɑːr/, ESS-tar),[34] is historically significant as some of its extensions were quite popular. First published in April 1997,[35] its developer has stated that he began development in 1982.[36]
- Python tarfile module supports multiple tar formats, including ustar, pax and gnu; it can read but not create V7 format and the SunOS tar extended format; pax is the default format for creation of archives.[37] Available since 2003.[38]
Additionally, most pax and cpio implementations can read and create multiple types of tar files.
Suffixes for compressed files
tar archive files usually have the file suffix .tar (e.g. somefile.tar).
A tar archive file contains uncompressed byte streams of the files which it contains. To achieve archive compression, a variety of compression programs are available, such as gzip, bzip2, xz, lzip, lzma, zstd, or compress, which compress the entire tar archive. Typically, the compressed form of the archive receives a filename by appending the format-specific compressor suffix to the archive file name. For example, a tar archive archive.tar, is named archive.tar.gz, when it is compressed by gzip.
Gängige Tar-Programme wie die BSD- und GNU- Versionen von tar unterstützen die Kommandozeilenoptionen Z (compress), z (gzip) und j (bzip2) zum Komprimieren bzw. Dekomprimieren der Archivdatei beim Erstellen oder Entpacken. Zu den neueren Optionen gehören --lzma ( LZMA ), --lzop ( lzop ), --xz oder J ( xz ), --lzip (lzip) und --zstd . [ 39 ] Die Dekomprimierung dieser Formate erfolgt automatisch, sofern unterstützte Dateinamenerweiterungen verwendet werden. Die Komprimierung erfolgt ebenfalls automatisch mit denselben Dateinamenerweiterungen, wenn die Option --auto-compress (kurz: -a ) an eine entsprechende Version von GNU tar übergeben wird. [ 17 ] BSD tar erkennt eine noch größere Bandbreite an Komprimierungsverfahren ( lrzip , lz4 ) anhand der darin enthaltenen Daten und nicht anhand des Dateinamens. [ 40 ] Nicht erkannte Formate müssen manuell per Pipe komprimiert oder dekomprimiert werden.
Die Dateinamenbeschränkungen von MS-DOS 8.3 führten zu zusätzlichen Konventionen für die Benennung komprimierter TAR-Archive. Diese Praxis hat jedoch abgenommen, da FAT nun lange Dateinamen ermöglicht .

| Kompressor | Lang | Kurz |
|---|---|---|
| bzip2 | .tar.bz2 | .tb2, .tbz, .tbz2, .tz2 |
| gzip | .tar.gz | .taz, .tgz |
| lzip | .tar.lz | |
| lzma | .tar.lzma | .tlz |
| lzop | .tar.lzo | |
| xz | .tar.xz | .txz |
| Kompresse | .tar.Z | .tZ, .taZ |
| zstd | .tar.zst | .tzst |
Siehe auch
- Vergleich der Archivformate
- Vergleich von Dateiarchivierungsprogrammen
- Liste der Archivformate
- Liste der POSIX-Befehle
Referenzen
- ^ "libarchive - C-Bibliothek und Kommandozeilen-Tools zum Lesen und Schreiben von tar-, cpio-, zip-, ISO- und anderen Archivformaten @ GitHub" . www.libarchive.org .
- ^ Sergey Poznyakoff (18. Juli 2023). „tar-1.35 veröffentlicht [stabil]“ . Abgerufen am 26. Juli 2023 .
- ^ John Gilmore (10.12.1986). „v07i088: Public-domain TAR program“ . Newsgroup : mod.sources . Archiviert vom Original am 07.02.2022 . Abgerufen am 07.02.2022 .
- ^ "posixtar" . Archiviert vom Original am 27.06.2022 . Abgerufen am 07.02.2022 .
- ^ "Stern" . Archiviert vom Original am 12.11.2023 . Abgerufen am 12.11.2023 .
- ^ Gilmore, John; Fenlason, Jay (4. Februar 2019). „Basic Tar Format“ . gnu.org . und andere. Free Software Foundation . Abgerufen am 17. April 2019 .
- ^ http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_06
- ^ a b "tar(5) Handbuchseite" . FreeBSD.org . FreeBSD. 20. Mai 2004. Abgerufen am 2. Mai 2017 .
- ^ IEEE Std 1003.1-1988, IEEE-Standard für Informationstechnologie – Schnittstelle für portable Betriebssysteme (POSIX)
- ^ IEEE Std 1003.1-2001, IEEE-Standard für Informationstechnologie – Schnittstelle für portable Betriebssysteme (POSIX)
- ^ IBM . „IBM System i Version 7.2 Programming Qshell“ (PDF) . IBM . Abgerufen am 05.09.2020 .
- ^ „Ankündigung von Windows 10 Insider Preview Build 17063 für PC“ . Windows Experience Blog . 19.12.2017 . Abgerufen am 2. Juli 2018 .
- ^ „Tar and Curl Come to Windows!" . 2019-03-22.
- ^ „Blockierung“ . ftp.gnu.org . Abgerufen am 26.08.2020 .
- ^ Hoo, James. „TAR-Dateien mit Freeware unter Windows/Mac/Linux öffnen/entpacken“ . e7z Org . Archiviert vom Original am 6. Februar 2015. Abgerufen am 3. September 2019 .
- ^ Kientzle , Tim (1995). Internet File Formats . Coriolis Groups Books. S. 196. ISBN 978-1-883577-56-8Abgerufen am 10.11.2022 .
- ^ a b c „GNU tar 1.32: 8.1 Speicherplatzersparnis durch Komprimierung“ . GNU . 2019-02-23 . Abgerufen am 11.08.2019 .
- ^ NEWS , git.savannah.gnu.org - Suche nach „Unterstützung für die Archivformate POSIX.1-2001 und ustar hinzugefügt“.
- ^ „GNU tar 1.34: 8. Controlling the Archive Format“ . GNU . Abgerufen am 11.07.2022 .
- ^ – Shell- und Dienstprogrammreferenz, Die einheitliche UNIX-Spezifikation , Version 5 von The Open Group
- ^ "#2116 Tar-Dateien mit PAX-Headern werden nicht geparst" . 7-Zip / Bugs | SourceForge .
- ^ https://www.gnu.org/software/tar/manual/html_section/after.html GNU tar 1.35: 6.8 Funktioniert nur mit neuen Dateien
- ^ https://www.baeldung.com/linux/bsd-tar-gnu-tar-star Unterschiede zwischen BSD tar und GNU tar und star | Baeldung on Linux
- ^ "Duplicity: Neues Dateiformat" . duplicity.nongnu.org .
- ^ gnu_tar/src/create.c at master · gitGNU/gnu_tar · GitHub , Zeile 546
- ^ src/bin/pax/tar.c at 8df76133309eacd4092b091ee0504adb842322a5 · openbsd/src · GitHub , Zeile 1066
- ^ a b – FreeBSD - Dateiformathandbuch
- ^ „Erweiterte Attribute: Das Gute, das weniger Gute, das Schlechte“ . Les bons comptes . 15. Juli 2014. Archiviert vom Original am 14. Dezember 2014. Abgerufen am 3. September 2019.
Die erweiterten Attribute können sehr wertvoll sein, um Dateimetadaten zu speichern (z. B.
author="John Smith", subject="country landscape"
), in den vielen Fällen ,in denen Sie diese Daten nicht in den internen Dateieigenschaften speichern möchten oder können.
- ^ „Tarbomb Definition“ . The Linux Information Project . Abgerufen am 12.12.2024 .
- ^ "bsdtar(1)" . man.freebsd.org .
- ^ Erstellung eines TAR-Archivs mit 100 KB fehlendem Anfang: . Der nächste Header kann mit einem Hex-Editor
tail --bytes=+100000 "intact archive.tar" >>"missing beginning.tar"gefunden werden. Wiederherstellung mit. Anführungszeichen sind bei Dateinamen ohne Leerzeichen nicht erforderlich.dd if="missing beginning.tar" of=recovered.tar ibs=[bytes until next header which starts with file path and name] skip=1 - ^ BillThor (28. Juli 2017). „Was macht ein Tar-Archiv durchsuchbar?“ . Super User . Abgerufen am 15. Dezember 2023 .
- ^ "GNU tar 1.35: 4.2.4 Zusammenführen von Archiven mit --concatenate" . www.gnu.org .
- ^ Team, schilytools. „Eine Sammlung von Tools, die von Jörg Schilling geschrieben oder ehemals verwaltet wurden“ . Abgerufen am 04.12.2025 .
- ^ Thomas E. Dickey (4. Januar 2015). „TAR versus Portability: Schily tar“ . Abgerufen am 23. Oktober 2021 .
- ^ Jörg Schilling (4. September 2021). „star – einzigartiger Standard-Bandarchivierer“ . Archiviert vom Original am 23. Oktober 2021. Abgerufen am 23. Oktober 2021 .
- ^ tarfile- Modul, python.org
- ^ tarfile.py , github.com
- ^ Poznyakoff, Sergey (2019-01-02). „tar-1.31 veröffentlicht [stabil]“ . GNU-Mailinglisten . Abgerufen am 06.08.2019 .
- ^ – FreeBSD- Handbuch für allgemeine Befehle
Weiterführende Literatur
- Górny, Michał (25.11.2018). „Portabilität von Tar-Funktionen“ . Archiviert vom Original am 22.02.2026.
Externe Links
- X/Open CAE Spezifikationsbefehle und -hilfsmittel Ausgabe 4, Version 2 (pdf), 1994, opengroup.org – kennzeichnet tar als zurückzuziehen
- tar in The Single UNIX Specification, Version 2, 1997, opengroup.org – gibt an, dass Anwendungen zu pax migrieren sollten.
- C.4 Dienstprogramme in den Open Group Base Specifications, Ausgabe 6, 2004, opengroup.org – kennzeichnet, dass tar entfernt wurde.
- – Shell and Utilities Reference, The Single UNIX Specification , Version 5 von The Open Group – spezifiziert die Dateiformate ustar und pax.
- – Unix - Programmierhandbuch Version 7
- – Handbuch von GNU
- – Plan 9 Programmierhandbuch, Band 1
- – Solaris 11.4 Benutzerhandbuch
- – FreeBSD Allgemeines Befehlshandbuch
- – OpenBSD Allgemeines Befehlshandbuch
- – Linux- Benutzerhandbuch – Benutzerbefehle
- – Handbuch zu FreeBSD -Dateiformaten
- TAR – Windows CMD – SS64.com