Was ist der Vorteil der Verwendung des Tar-Dateiformats heute?
Das Archivierungsformat für Teer ist in den Rechenjahren eine echte Methuselah, wird aber auch heute noch stark genutzt. Was macht das tar-Format lange nach seiner Einführung so nützlich??
Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.
Die Frage
Der Superuser-Leser MarcusJ ist neugierig auf das Teer-Format und warum wir es nach all den Jahren immer noch verwenden:
Ich weiß, dass tar früher für Bandarchive gemacht wurde, aber heute haben wir Archivdateiformate, die sowohl Dateien zusammenfassen als auch Komprimierung innerhalb desselben logischen Dateiformats durchführen.
Fragen:
- Gibt es während der Aggregations- / Komprimierungs- / Dekomprimierungsstufen einen Leistungsnachteil für die Verwendung von in gzip oder bzip2 gekapseltem tar, wenn mit einem Dateiformat verglichen wird, das Aggregation und Komprimierung in derselben Datenstruktur durchführt? Angenommen, die Laufzeit des zu vergleichenden Kompressors ist identisch (z. B. sind gzip und Deflate ähnlich)..
- Gibt es Funktionen des tar-Dateiformats, die andere Dateiformate wie .7z und .zip nicht haben??
- Da tar ein solches altes Dateiformat ist und heutzutage neuere Dateiformate existieren, wird es heute immer noch unter GNU / Linux, Android, BSD und anderen UNIX-Systemen so häufig verwendet, ob tar (ob in gzip, bzip2 oder sogar dem neuen xz gekapselt) ist Betriebssysteme, für Dateiübertragungen, Programmquellen und Binärdownloads und manchmal sogar als Paketmanagerformat?
Das ist eine durchaus vernünftige Frage. In den letzten dreißig Jahren hat sich in der Computerwelt so viel verändert, aber wir verwenden immer noch das tar-Format. Worum geht "s?
Die Antwort
SuperUser-Mitwirkender Allquixotic bietet einen Einblick in die Langlebigkeit und Funktionalität des Tar-Formats:
Teil 1: Leistung
Hier ist ein Vergleich zweier separater Workflows und ihrer Aufgaben.
Sie haben eine Datei auf der Festplatte
blah.tar.gz
Dies sind beispielsweise 1 GB gzip-komprimierte Daten, die unkomprimiert 2 GB beanspruchen (also ein Komprimierungsverhältnis von 50%)..Wenn Sie das Archivieren und Komprimieren separat durchführen möchten, würden Sie Folgendes erstellen:
tar cf blah.tar files…
Dies würde in führen
blah.tar
Das ist eine bloße Aggregation derDateien…
in unkomprimierter Form.Dann würden Sie tun
gzip blah.tar
Dies würde den Inhalt von lesen
blah.tar
komprimieren Sie sie von der Festplatte durch den gzip-Komprimierungsalgorithmus und schreiben Sie den Inhalt inblah.tar.gz
, dann die Verknüpfung aufheben (löschen)blah.tar
.Lassen Sie uns jetzt dekomprimieren!
Weg 1
Du hast
blah.tar.gz
, in gewisser Weise.Sie beschließen zu laufen:
gunzip blah.tar.gz
Dieser Wille
- LESEN Sie die komprimierten 1 GB-Dateninhalte von
blah.tar.gz
.- VERARBEITEN Sie die komprimierten Daten durch
gzip
Dekompressor im Speicher.- Wenn sich der Speicherpuffer mit "einem Block" im Wert von Daten füllt, schreiben Sie die unkomprimierten Daten in die Datei
blah.tar
Wiederholen Sie den Vorgang, bis alle komprimierten Daten gelesen sind.- Lösen Sie die Verknüpfung der Datei
blah.tar.gz
.Jetzt hast du
blah.tar
auf der Festplatte, die nicht komprimiert ist, aber eine oder mehrere Dateien enthält, mit sehr geringem Datenstrukturaufwand. Die Dateigröße ist wahrscheinlich ein paar Bytes größer als die Summe aller Dateidaten wäre.Sie laufen:
tar xvf blah.tar
Dieser Wille
- LESEN Sie die 2 GB unkomprimierten Dateninhalts von
blah.tar
und dasTeer
Datenstrukturen des Dateiformats, einschließlich Informationen zu Dateiberechtigungen, Dateinamen, Verzeichnissen usw.- SCHREIBEN Sie die 2 GB Daten und die Metadaten auf die Festplatte. Dies beinhaltet: Übersetzen der Datenstruktur- / Metadaten-Informationen, um gegebenenfalls neue Dateien und Verzeichnisse auf der Festplatte zu erstellen, oder vorhandene Dateien und Verzeichnisse mit neuem Dateninhalt umschreiben.
Die Gesamtdaten wir LESEN Von der Festplatte betrug in diesem Prozess 1 GB (für Gunzip) + 2 GB (für Teer) = 3 GB.
Die Gesamtdaten wir SCHRIEB In diesem Prozess waren 2 GB (für Gunzip) + 2 GB (für Tar) + einige Bytes für Metadaten = ca. 4 GB.
Weg 2
Du hast
blah.tar.gz
, in gewisser Weise.Sie beschließen zu laufen:
tar xvzf blah.tar.gz
Dieser Wille
- LESEN Sie die komprimierten 1 GB-Dateninhalte von
blah.tar.gz
, ein Block nach dem anderen in Erinnerung.- VERARBEITEN Sie die komprimierten Daten durch
gzip
Dekompressor im Speicher.- Wenn der Speicherpuffer voll ist, wird dies der Fall sein Rohr diese Daten im Speicher bis hin zum
Teer
Dateiformat-Parser, der Informationen über Metadaten usw. und die unkomprimierten Dateidaten liest.- Da füllt sich der Speicherpuffer im
Teer
Datei-Parser, schreibt er die unkomprimierten Daten auf die Festplatte, indem er Dateien und Verzeichnisse erstellt und sie mit dem unkomprimierten Inhalt füllt.Die Gesamtdaten wir LESEN von der Festplatte in diesem Prozess waren 1 GB komprimierte Daten, Zeitraum.
Die Gesamtdaten wir SCHRIEB In diesem Prozess waren 2 GB unkomprimierte Daten + einige Bytes für Metadaten = etwa 2 GB.
Wenn Sie feststellen, die Anzahl der Festplatten-E / A in Weg 2 ist identisch auf die Datenträger-E / A, die von beispielsweise ausgeführt wird
Postleitzahl
oder7-Zip
Programme anpassen, um eventuelle Unterschiede im Kompressionsverhältnis anzupassen.Wenn das Kompressionsverhältnis für Sie wichtig ist, verwenden Sie die Option
Xz
Kompressor zu verkapselnTeer
, und Sie haben ein TAR-Archiv von LZMA2, das ebenso effizient ist wie der fortschrittlichste Algorithmus, der verfügbar ist7-Zip
:-)Teil 2: Funktionen
Teer
speichert UNIX-Berechtigungen in seinen Dateimetadaten und ist sehr bekannt und wurde getestet, um ein Verzeichnis mit allen Arten von unterschiedlichen Berechtigungen, symbolischen Links usw. erfolgreich zu packen. Es gibt mehr als einige Fälle, in denen ein Bündel von Dateien möglicherweise in einem Globus gespeichert werden muss eine einzelne Datei oder einen einzelnen Stream, aber nicht unbedingt komprimieren (obwohl Komprimierung nützlich und häufig verwendet wird).Teil 3: Kompatibilität
Viele Tools werden in Quell- oder Binärform als .tar.gz oder .tar.bz2 verteilt, da es sich um ein Dateiformat mit dem geringsten gemeinsamen Nenner handelt: So wie die meisten Windows-Benutzer Zugriff auf .zip- oder .rar-Dekompressoren haben, die meisten Linux-Installationen. selbst die einfachsten werden zumindest über tar und gunzip verfügen, egal wie alt oder reduziert sie sind. Selbst Android-Firmwares haben Zugriff auf diese Tools.
Neue Projekte, die auf Zielgruppen ausgerichtet sind, auf denen moderne Distributionen ablaufen, können sehr gut in einem moderneren Format verteilt werden, z. B. .tar.xz (mit dem Komprimierungsformat Xz (LZMA), das sich besser komprimiert als gzip oder bzip2) oder mit .7z ähnlich die ZIP- oder Rar-Dateiformate, indem sie ein Layout zum Einkapseln mehrerer Dateien in eine einzige Datei komprimieren und angeben.
Sie sehen nicht, dass .7z häufiger verwendet wird, aus dem gleichen Grund, dass Musik nicht über Online-Download-Stores in brandneuen Formaten wie Opus oder Video in WebM verkauft wird. Kompatibilität mit Personen, die alte oder sehr einfache Systeme verwenden.
Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.