21Aug

Was ist der Vorteil der Verwendung des Tar-Dateiformats heute?

click fraud protection


Das tar-Archivierungsformat ist in Rechenjahren ein wahres Methusalem, aber es wird immer noch stark genutzt. Was macht das Tar-Format lange nach seiner Einführung so nützlich?

Die heutige Frage &Die Antwortsitzung kommt dank SuperUser, einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites, zu uns.

Die Frage

SuperUser-Leser MarcusJ ist neugierig auf das tar-Format und warum wir es nach all den Jahren immernoch verwenden:

Ich weiß, dass tar für Bandarchive erstellt wurde, aber heute haben wir Archivdateiformate, die beides habenAggregieren Sie Dateien und führen Sie die Komprimierung im selben logischen Dateiformat durch.

Fragen:

  • Gibt es während der Aggregations-/compression/-Dekomprimierungsstufen eine Leistungseinbuße für die Verwendung von in gzip oder bzip2 eingekapseltem tar im Vergleich zur Verwendung eines Dateiformats, das Aggregation und Komprimierung in derselben Datenstruktur durchführt? Angenommen, die Laufzeit des zu vergleichenden Kompressors ist identisch( z. B. gzip und Deflate sind ähnlich).
  • instagram viewer
  • Gibt es Funktionen des TAR-Dateiformats, die andere Dateiformate wie. 7z und. zip nicht haben?
  • Da tar ein so altes Dateiformat ist, und neuere Dateiformate heute existieren, warum ist tar( egal ob in gzip, bzip2 oder gar dem neuen xz gekapselt) heute noch so weit verbreitet unter GNU / Linux, Android, BSD und anderenUNIX-Betriebssysteme, für Dateiübertragungen, Programmquellen- und Binärdownloads und manchmal sogar als Paketmanagerformat?

Das ist eine völlig vernünftige Frage. So viel hat sich in den letzten dreißig Jahren in der Computerwelt verändert, aber wir benutzen immer noch das tar-Format. Worum geht "s?

Der Antwort-

SuperUser-Mitwirkender Allquixotic bietet einige Einblicke in die Langlebigkeit und Funktionalität des tar-Formats:

Teil 1: Leistung

Hier ist ein Vergleich zweier separater Arbeitsabläufe und was sie tun.

Sie haben eine Datei auf der Festplatte blah.tar.gz, die etwa 1 GB gzip-komprimierte Daten enthält, die, wenn sie unkomprimiert sind, 2 GB belegen( also eine Komprimierungsrate von 50%).

Die Art und Weise, wie Sie dies erstellen würden, wenn Sie die Archivierung und Komprimierung getrennt vornehmen würden, wäre:

tar cf blah.tar Dateien. ..

Dies würde zu blah.tar führen, was eine bloße Aggregation der Dateien ist.in unkomprimierter Form.

Dann würdest du

machen gzip blah.tar

Das würde den Inhalt von blah.tar von der Platte lesen, sie durch den gzip Komprimierungsalgorithmus komprimieren, den Inhalt in blah.tar.gz schreiben und dann die Datei blah( löschen).Teer.

Jetzt dekomprimieren wir!

Weg 1

Sie haben blah.tar.gz, auf die eine oder andere Weise.

Sie entscheiden sich für:

gunzip blah.tar.gz

Dies liest

  • die 1GB komprimierten Dateninhalte von blah.tar.gz.
  • Verarbeitet die komprimierten Daten über den gzip-Dekomprimierer im Speicher.
  • Wenn der Speicherpuffer mit Daten gefüllt ist, die "einen Block" enthalten, SCHREIBEN Sie die unkomprimierten Daten in die Datei blobl.tar auf der Festplatte und wiederholen Sie den Vorgang, bis alle komprimierten Daten gelesen sind.
  • Aufheben( Löschen) der Datei blah.tar.gz.

Nun haben Sie blah.tar auf der Festplatte, die unkomprimiert ist, aber eine oder mehrere Dateien enthält, mit sehr geringem Datenstruktur-Overhead. Die Dateigröße ist wahrscheinlich ein paar Bytes größer als die Summe aller Dateidaten wäre.

Sie ausführen:

tarxvf blah.tar

Dies wird

  • lesen Sie die 2 GB unkomprimierte Dateninhalte von blah.tar und das TAR-Dateiformat Datenstrukturen, einschließlich Informationen über Dateiberechtigungen, Dateinamen, Verzeichnisse usw.
  • WRITE auf die Festplattedie 2 GB Daten plus die Metadaten. Dies umfasst: Übersetzen der Datenstruktur- / Metadateninformationen in das Erzeugen neuer Dateien und Verzeichnisse auf dem Datenträger, wie es geeignet ist, oder das Neuschreiben bestehender Dateien und Verzeichnisse mit neuen Dateninhalten.

Die gesamten Daten, die in diesem Prozess von der Festplatte gelesen hat, waren 1 GB( für gunzip) + 2 GB( für tar) = 3 GB.

Die gesamten Daten, die in diesem Prozess auf die Festplatte geschrieben hat, waren 2 GB( für gunzip) + 2 GB( für tar) + ein paar Bytes für Metadaten = etwa 4 GB.

Weg 2

Du hast blah.tar.gz, so oder so.

Sie entscheiden sich für:

tar xvzf blah.tar.gz

Dies liest

  • die 1GB komprimierten Dateninhalte von blah.tar.gz, Block für Satz, in den Speicher.
  • VERARBEITEN Sie die komprimierten Daten über den gzip-Dekomprimierer im Speicher.
  • Wenn der Speicherpuffer voll ist, leitet diese Daten im Speicher an den TAR-Dateiformat-Parser weiter, der die Informationen über Metadaten usw. und die unkomprimierten Dateidaten liest.
  • Wenn der Speicherpuffer im TAR-Dateiparser voll ist, schreibt er die unkomprimierten Daten auf die Festplatte, indem er Dateien und Verzeichnisse erstellt und sie mit dem unkomprimierten Inhalt füllt.

Die gesamten Daten, die in diesem Prozess von der Festplatte gelesen haben, waren 1 GB komprimierte Daten, Zeitraum.

Die gesamten Daten, die in diesem Prozess auf die Festplatte geschrieben hat, waren 2 GB unkomprimierte Daten + ein paar Bytes für Metadaten = etwa 2 GB.

Wenn Sie bemerken, ist die Menge der Platte I / O in Way 2 identisch mit der Disk-I / O durch, sagen wir, die Zip or7-Zip-Programme, Anpassung für Unterschiede in der Komprimierungsrate.

Und wenn Kompressionsrate Ihr Anliegen ist, verwenden Sie den Xz-Kompressor, um tar zu kapseln, und Sie haben LZMA2'ed TAR-Archiv, das genauso effizient wie der fortschrittlichste Algorithmus für 7-Zip ist: -)

Teil 2: Funktionen

tar speichert UNIX-Berechtigungen innerhalb seiner Datei-Metadaten und ist sehr gut bekannt und getestet für das erfolgreiche Packen eines Verzeichnisses mit allen Arten von verschiedenen Berechtigungen, symbolischen Links, etc. Es gibt mehr als ein paar Fälle, in denen man eine Reihe von Dateien kugeln mussin eine einzelne Datei oder einen Stream, aber nicht unbedingt komprimieren( obwohl Komprimierung ist nützlich und oft verwendet).

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 kleinsten gemeinsamen Nenner handelt: So wie die meisten Windows-Benutzer Zugriff auf. zip oder. rar habenDekomprimierer, die meisten Linux-Installationen, selbst die einfachsten, haben Zugriff auf mindestens tar und gunzip, egal wie alt oder reduziert. Sogar Android-Firmwares haben Zugriff auf diese Tools.

Neue Projekte, die auf Zielgruppen ausgerichtet sind, die moderne Distributionen ausführen, können sehr gut in einem moderneren Format wie. tar.xz( mit dem Komprimierungsformat Xz( LZMA), das besser komprimiert als gzip oder bzip2 ist) oder. 7z, das ähnlich ist, verteilenzu den Zip- oder Rar-Dateiformaten, indem es ein Layout zum Einkapseln mehrerer Dateien in eine einzelne Datei komprimiert und spezifiziert.

Sie sehen nicht, dass. 7z häufiger verwendet wird, aus demselben Grund, aus dem Musik nicht in Online-Download-Stores in brandneuen Formaten wie Opus oder Video in WebM verkauft wird. Kompatibilität mit Menschen, die alte oder sehr einfache Systeme betreiben.

Haben Sie etwas zur Erklärung hinzuzufügen? Ton in den Kommentaren ab. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange Benutzern lesen? Sehen Sie sich den vollständigen Diskussionsfaden hier an.