Frage Was ist der Vorteil der Verwendung von "Teer" heute?


ich weiß das tar wurde heute für Bandarchive erstellt, aber heute haben wir Archivdateiformate, die sowohl Dateien aggregieren als auch im selben logischen Dateiformat komprimieren.

Fragen:

  • Gibt es während der Aggregations- / Komprimierungs- / Dekomprimierungsstufen für die Verwendung eine Leistungseinbuße? tar eingekapselt in gzip oder bzip2, im Vergleich zu einem Dateiformat, 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).

  • Gibt es Merkmale der tar Dateiformat, das andere Dateiformate, wie z .7z und .zip habe nicht?

  • Schon seit tar ist so ein altes Dateiformat, und neuere Dateiformate existieren heute, warum ist tar (ob eingekapselt in gzip, bzip2 oder auch das Neue xz) immer noch so weit verbreitet heute auf GNU / Linux, Android, BSD und anderen solchen UNIX-Betriebssystemen, für Dateiübertragungen, Programmquellen- und Binärdownloads und manchmal sogar als Paketmanagerformat?


206
2018-03-14 14:33


Ursprung


Ich stimme nicht zu, dass es "Zeit verschwendet". Wenn Sie Leistung meinen, gibt es keine tatsächliche Leistungseinbuße für tar, da das Format sehr effizient ist. Wenn du meinst es verschwendet Ihre Zeit, ich sehe nicht wie tar xvzf ist schwieriger als 7z -x... - allquixotic
Er scheint die Tatsache zu beklagen, dass tar keinen Katalog am Anfang speichert, also müssen Gui-Komprimierungstools, die den Inhalt vor dem Extrahieren auflisten wollen, den gesamten tar dekomprimieren, nur um den Inhalt aufzulisten, und dann beim Extrahieren wieder dekomprimieren . - psusi
@MarcusJ: denkst du, dass 7z irgendwie magisch weiß, wo jede Datei in einem Archiv startet? Außerdem arbeiten die üblichen Komprimierungsalgorithmen (gzip, bzip2) mit dem Streaming des Inhalts: es ist nicht notwendig, die erste vorletzte Stufe zu 100% zu beenden. - progo
Auch bei @MarcusJ scheinst du zwei verschiedene Dinge zu verwirren: wenn du es tust tar xvzfdie unkomprimierten Daten ist nicht geschrieben auf Festplatte in .tar Format! Du hast Recht, wenn du rennst gunzip blah.tar.gz und dann tar xf blah.tar, es würde die Daten zweimal auf Platte schreiben (einmal als .tar und wieder als Dateien im Dateisystem), aber niemand tut es tatsächlich so. Das tar xzf benutzt a UNIX-Rohrleitung (im Grunde eine Speicherkopie), um die unkomprimierten Daten zu übertragen gzip (oder was auch immer Kompressor) zu tarso sind die Daten nicht auf Diskette geschrieben in .tar Format. - allquixotic
Eine Sache, die ich weiß, ist das tar (besonders komprimiert) verhält sich schrecklich, wenn es um Datenkorruption geht. Kleine Redundanz- / Wiederherstellungsdaten, die von modernen Formaten hinzugefügt werden, sind Gold wert - PPC


Antworten:


Teil 1: Leistung

Hier ist ein Vergleich zweier separater Workflows und was sie tun.

Sie haben eine Datei auf der Festplatte blah.tar.gz Das sind zum Beispiel 1 GB gzip-komprimierte Daten, 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 files ...

Dies würde zur Folge haben blah.tar was ist eine bloße Aggregation der files ... in unkomprimierter Form.

Dann würdest du tun

gzip blah.tar

Dies würde den Inhalt von lesen blah.tar von der Festplatte komprimieren Sie sie durch den Gzip-Komprimierungsalgorithmus, schreiben Sie den Inhalt in blah.tar.gz, dann aufheben (löschen) Sie die Datei blah.tar.

Lasst uns jetzt dekomprimieren!

Weg 1

Du hast blah.tar.gz, in gewisser Weise.

Sie entscheiden sich zu laufen:

gunzip blah.tar.gz

Dieser Wille

  • LESEN Sie den 1 GB komprimierten Dateninhalt von blah.tar.gz.
  • Verarbeiten Sie die komprimierten Daten über die gzip Dekomprimierer im Speicher.
  • Wenn der Speicherpuffer mit Daten gefüllt ist, die "einen Block" enthalten, SCHREIBEN Sie die unkomprimierten Daten in die Datei blah.tar auf der Festplatte und wiederholen, bis alle komprimierten Daten gelesen sind.
  • Unlink (löschen) Sie die Datei blah.tar.gz.

Jetzt hast du 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 laufen:

tar xvf blah.tar

Dieser Wille

  • LESEN Sie den 2 GB unkomprimierten Dateninhalt von blah.tar und das tar Datenstrukturen des Dateiformats, einschließlich Informationen zu Dateiberechtigungen, Dateinamen, Verzeichnissen usw.
  • Schreiben Sie die 2 GB Daten und die Metadaten auf die Festplatte. 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 Gesamtdaten wir LESEN von der Platte in diesem Prozess war 1 GB (für Gunzip) + 2 GB (für Teer) = 3 GB.

Die Gesamtdaten wir SCHRIEB auf Platte in diesem Prozess war 2 GB (für Gunzip) + 2 GB (für tar) + ein paar Bytes für Metadaten = ca. 4 GB.

Weg 2

Du hast blah.tar.gz, in gewisser Weise.

Sie entscheiden sich zu laufen:

tar xvzf blah.tar.gz

Dieser Wille

  • LESEN Sie den 1 GB komprimierten Dateninhalt von blah.tar.gz, ein Block nach dem anderen, in den Speicher.
  • Verarbeiten Sie die komprimierten Daten über die gzip Dekomprimierer im Speicher.
  • Wenn der Speicherpuffer voll ist, wird es Rohr diese Daten, im Speicher, bis zum tar Dateiformat-Parser, der die Informationen über Metadaten usw. und die unkomprimierten Dateidaten liest.
  • Wie der Speicherpuffer in der füllt tar Datei-Parser, wird es die unkomprimierten Daten auf die Festplatte schreiben, indem sie Dateien und Verzeichnisse erstellen und sie mit dem unkomprimierten Inhalt füllen.

Die Gesamtdaten wir LESEN von der Platte in diesem Prozess war 1 GB komprimierte Daten, Zeitraum.

Die Gesamtdaten wir SCHRIEB auf Platte in diesem Prozess war 2 GB unkomprimierte Daten + ein paar Bytes für Metadaten = ca. 2 GB.

Wenn Sie bemerken, wie viel Festplatten-I / O in Weg 2 ist identisch zu der Platten-I / O durchgeführt von, sagen wir, die Zip oder 7-Zip Programme, Anpassung für Unterschiede im Kompressionsverhältnis.

Und wenn Kompressionsrate Ihr Anliegen ist, verwenden Sie die Xz Kompressor einkapseln tar, und du hast LZMA2'ed TAR-Archiv, das genauso effizient ist wie der fortschrittlichste Algorithmus, der für 7-Zip verfügbar 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 möglicherweise eine Reihe von Dateien kugeln muss in 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: Ähnlich wie die meisten Windows-Benutzer haben die meisten Linux-Installationen Zugriff auf .zip- oder .rar-Dekomprimierer , selbst die grundlegendsten, haben mindestens Zugriff auf tar und gunzip, egal wie alt oder reduziert sie sind. Sogar Android-Firmwares haben Zugriff auf diese Tools.

Neue Projekte, die auf Zielgruppen ausgerichtet sind, die moderne Distributionen ausführen, können sehr wohl 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, verteilen das ZIP oder RAR Dateiformate, indem es ein Layout zum Einkapseln mehrerer Dateien in eine einzige Datei komprimiert und spezifiziert.

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


173
2018-03-14 17:09



Kudos für eine gute Antwort mit dem ganzen Inhalt getrennt unter drei verschiedenen Headern. - JFW
"Teil 3: Kompatibilität" scheint von @Kruugs Antwort kopiert worden zu sein. - titaniumdecoy
@titaniumdecoy Hast du bemerkt, dass es allmächtig war, wer diesen Teil ursprünglich geschrieben und in Krügs Antwort editiert hat? - slhck
Danke, dass du das aufgezeigt hast, ich habe es nicht bemerkt. Allerdings erscheint es mir ein bisschen albern, auf dieser Seite einen identischen Textblock in zwei verschiedenen Antworten zu haben. - titaniumdecoy
Dies beantwortet warum tar passt in das Archivierungsökosystem (dh, um Dateien zusammenzufassen, bietet einen Leistungsschub und einige andere Vorteile wie das Speichern von Berechtigungen), aber es geht nicht darum, warum moderne Alternativen wie dar werden nicht verwendet. Mit anderen Worten, diese Antwort rechtfertigt die Verwendung von Dateiaggregatoren, nicht aber der tar Software für sich. - gaborous


Dies wurde auf Stack Overflow beantwortet.

bzip und gzip arbeiten an einzelnen Dateien, nicht an Dateigruppen. Plain old zip (und pkzip) arbeiten mit Dateigruppen und haben das Konzept des integrierten Archivs.

Die * nix-Philosophie ist eines der kleinen Werkzeuge, die bestimmte Aufgaben sehr gut erledigen und miteinander verkettet werden können. Deshalb gibt es hier zwei Tools, die bestimmte Aufgaben haben und gut aufeinander abgestimmt sind. Es bedeutet auch, dass Sie tar verwenden können, um Dateien zu gruppieren, und dann haben Sie die Wahl zwischen Komprimierungstools (bzip, gzip, etc).

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: Ähnlich wie die meisten Windows-Benutzer haben die meisten Linux-Installationen Zugriff auf .zip- oder .rar-Dekomprimierer , selbst die grundlegendsten, werden zumindest Zugang haben tar und gunzipegal 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 z .tar.xz (mit dem Xz (LZMA) Komprimierungsformat, das besser komprimiert als gzip oder bzip2), oder .7z, das ähnlich ist wie das POSTLEITZAHL oder RAR Dateiformate, indem es ein Layout zum Einkapseln mehrerer Dateien in eine einzige Datei komprimiert und spezifiziert.

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


100
2017-08-19 08:50



Hi @Kruug, ich habe deinen Beitrag nur bearbeitet, um einen praktischen Einblick zu geben, warum Menschen immer noch sind wählen um diese Formate zu verwenden, wenn sie die Wahl haben, etwas anderes zu verwenden. Ich habe den Text, den Sie bereits hatten, nicht geändert. Dies soll nur sicherstellen, dass die scheinbar kanonische Antwort auf diese Frage das vollständige Bild zeigt. Fühlen Sie sich frei, meine Bearbeitung zu bearbeiten, wenn Sie wollen :) - allquixotic
@allquixotic Gründung jemand? Bearbeiten Sie die Bearbeitung von und bearbeiten Sie, so dass Sie eine Bearbeitung bearbeiten können ... - SnakeDoc
Diese Antwort ist definitiv ein Fall von "Ich bin manchmal von unverdienten upvotes weggeblasen". Es geht nicht um das Kernproblem der Frage, das darin besteht, den Inhalt von komprimiertem tar aufzulisten und es ist nicht einmal eine originelle Antwort! - Ярослав Рахматуллин
-1 für große Gerechtigkeit. das hätte ein Kommentar sein sollen. - wim
Ich kaufe nicht das Erbe / den kleinsten gemeinsamen Nenner Argument; Ich erinnere mich an neue Systeme (Sonne), die häufig gzip / gunzip (von sunfreeware) heruntergeladen haben, nur um andere tar.gz-gepackte Software zu installieren (plus Gnu-Teer, da der Teer von der Sonne gelutscht ist). Für Legacy / niedrigerer gemeinsamer Nenner hatten Sie tar.Z (komprimieren / dekomprimieren). Der Fortschritt von Dienstprogrammen war ein konstanter Strom (kein Wortspiel beabsichtigt) von Änderung und Verbesserung: Z => zip => gz => bz2 => 7z => xz (oder was auch immer Sie bevorzugen). Wie bei der Rolle von tar, einige Utils un / nur komprimieren, und immer noch Teer benötigen, um Dateihierarchien zu bündeln. - michael


Tar verfügt über eine Vielzahl von Operationen und Modifikatoren, die alles über Unix-Dateisysteme wissen. Es kennt Unix-Berechtigungen, die verschiedenen Zeiten, die mit Dateien verbunden sind, über Hardlinks, über Softlinks (und über die Möglichkeit, dass symbolische Links Zyklen in das Dateisystemdiagramm einbringen können) und erlaubt Ihnen, mehrere verschiedene Möglichkeiten anzugeben, um all diese Daten zu verwalten .

  • Möchten Sie, dass die extrahierten Daten die Zugriffszeiten für Dateien beibehalten? Tar kann das tun. Um Berechtigungen zu erhalten? Tar kann das tun.

  • Möchten Sie symbolische Links als symbolische Links erhalten? Tar macht das standardmäßig. Möchten Sie stattdessen das Ziel kopieren? Tar kann das tun.

  • Möchten Sie sicher sein, dass Hardlink-Daten nur einmal gespeichert werden (um das Richtige zu tun)? Tar macht das.

  • Möchten Sie sparse Dateien gut verarbeiten? Tar kann das tun.

  • Möchten Sie unkomprimierte Daten (warum?)? Tar kann das tun. Mit gzip komprimieren? Tar kann das tun. Mit bzip2? Tar kann das tun. Mit beliebigen externen Komprimierungsprogrammen? Tar kann das tun.

  • Möchten Sie auf einem Raw-Gerät schreiben oder wiederherstellen? Das Format von Tar ist in Ordnung.

  • Möchten Sie Dateien zu einem vorhandenen Archiv hinzufügen? Tar kann das tun. Um zwei Archive zu unterscheiden, um zu sehen, was sich geändert hat? Tar kann das tun. Um nur die Teile des Archivs zu aktualisieren, die sich geändert haben? Tar kann das tun.

  • Möchten Sie sicher sein, dass Sie nicht in mehr als einem Dateisystem archivieren? Tar kann das tun.

  • Möchten Sie nur Dateien abrufen, die neuer als Ihre letzte Sicherung sind? Tar kann das tun.

  • Möchten Sie Benutzer- und Gruppennamen oder -nummern beibehalten? Teer kann beides tun.

  • Müssen Sie Geräteknoten erhalten (wie die Dateien in /dev) damit das System nach der Extraktion korrekt läuft? Tar kann das tun.

Tar wurde entwickelt, um viele und viele Anwendungsfälle seit Jahrzehnten zu handhaben und weiß es wirklich viel über die Dinge, die Leute mit Unix-Dateisystemen machen wollen.


61



Sie brauchen GNU tar nicht, um einen beliebigen Komprimierer zu verwenden: Sagen Sie einfach tar, um das Archiv mit stdout zu schreiben f -und es zum Kompressor leiten. - Ilmari Karonen
"Möchten Sie unkomprimierte Daten (warum?)?" ich benutze tar sehr oft, um einen Dateisystembaum von einem Ort zum anderen zu kopieren und Berechtigungen usw. zu erhalten, und die Komprimierung in diesem Fall erfordert nur zusätzliche CPU-Zyklen. Z.B. tar cf - * | tar xf - -C /somewhere. - Steve
Darüber hinaus möchten Sie eine TAR-Datei, wenn das Zieldateisystem Deduplizierung durchführt. Durch das Erstellen von komprimierten Archiven in einem Dateisystem, das die Deduplizierung durchführt, wird das Deduplizierungsverhältnis erheblich verringert. Beispiel: Wir haben einmal eine $ 10.000,00 tar.gz Datei gelöscht; Das bedeutet, dass Speicherplatz im Wert von 10.000 US-Dollar aufgewendet wurde, weil jemand Komprimierung verwendet hat. - Aaron
@Steve CPU-Zyklen können für Algorithmen wie LZ4 oder LZO billiger sein als Festplatten-IO. Deshalb werden sie in zram und transparenten Kompressions-Dateisystemen wie NTFS, ZFS, Btrfs verwendet. Manchmal ist es sogar schneller als zu komprimieren, da die Menge an Disk-IO stark reduziert ist - phuclv


Sie verwechseln die zwei verschiedenen Prozesse von Archivierung und Kompression.

Gründe für die Verwendung eines Archivers

Ein Grund, die Archivierung ohne Komprimierung zu verwenden, ist zum Beispiel ein Haufen von Dateien wird von einem Host auf einen anderen kopiert. Ein Befehl wie der folgende

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

kann die Dinge erheblich beschleunigen. Wenn ich weiß, dass die Dateien nicht sein können komprimiert oder wenn SSH ist mit Komprimierung eingerichtet, kann es erhebliche CPU sparen Zeit. Sicher kann man ein moderneres Komprimierungstool mit einer Archivierungsfunktion verwenden und deaktivieren Sie die Komprimierung. Der Vorteil von tar ist, dass ich es erwarten kann auf jedem System verfügbar sein.

Gründe für die Verwendung eines Archivers mit Gzip-Komprimierung

Ein Grund, den ich verwende tar mit gzip ist: Geschwindigkeit! Wenn ich ein paar GiB Textdateien von einem Ort zu einem anderen übertragen möchte, I Es ist mir egal, die letzten Bytes auszuquetschen, da nur die Komprimierung erfolgt verwendet für den Transit, nicht für die langfristige Lagerung. In diesen Fällen verwende ich gzip, was die CPU nicht auslastet (im Gegensatz zu 7-Zipzum Beispiel), die bedeutet, dass ich bin I / O wieder gebunden und nicht an die CPU gebunden. Und wieder: gzip kann sein als überall verfügbar angesehen.

Gründe für die Verwendung tar zugunsten von scp, rsync, etc.

Es schlägt scp wenn Sie viele kleine Dateien zu kopieren haben (zum Beispiel ein Mail-Verzeichnis mit Hunderttausenden von Dateien). rsync, so großartig es auch sein mag, ist vielleicht nicht überall verfügbar. Des Weiteren, rsync lohnt sich nur, wenn ein Teil der Dateien - oder eine ältere Version - bereits am Ziel vorhanden ist. Für die erste Kopie tar ist am schnellsten, mit Komprimierung oder ohne, abhängig von den tatsächlichen Daten.


28



Aber wenn Sie archivieren, warum nicht auch komprimieren? Okay, ja es kann Zeit für Dateien sparen, die nicht leicht komprimiert werden, aber dann sollten Archivierer wahrscheinlich wissen, dass Musik zum Beispiel nicht sehr komprimierbar ist, außer für die Header. - MarcusJ
Möglicherweise müssen Sie das nicht, oder Ihr Inhalt ist möglicherweise nicht komprimierbar. - Hasturkun
Aus Gründen der Leistung ist es oft einfacher, die unkomprimierte Dateiaggregation zu verwenden, wenn Daten über Netzwerkverbindungen mit sehr hoher Bandbreite gesendet werden, die die Geschwindigkeit überschreiten, mit der der Komprimierer Daten komprimieren kann. Dies ist beispielsweise mit Gigabit Ethernet erreichbar; Nur wenige, gut konzipierte Komprimierungsalgorithmen, die ebenfalls eine sehr niedrige Komprimierungsrate aufweisen, können Daten sogar auf einer großen Desktop-CPU schnell komprimieren. Auf einem Embedded-Gerät haben Sie noch weniger CPU-Zeit. - allquixotic
Dies beschleunigt nicht nur die Dinge, sondern ermöglicht es auch, Dateibesitz, Zeitstempel und Attribute beizubehalten (wenn die Benutzerprivilegien dies zulassen). - Andre Holzner
@AndreHolzner Richtig. Das tue ich oft tar cf - . | (cd ~/somewhere; tar xvf -). Es ist wirklich nützlich, nicht warten zu müssen, bis der zentrale Index geschrieben ist (wie zum Beispiel in einer Zip-Datei). - user239558


Zusätzlich zu den anderen guten Antworten bevorzuge ich die Kombination tar + gzip|bzip2|xz Hauptsächlich, weil diese komprimierten Dateien wie Streams sind, und Sie können sie problemlos pipen.

Ich muss eine im Internet verfügbare Datei dekomprimieren. Mit beiden zip oder rar Formate muss ich es zuerst herunterladen und dann entpacken. Mit tar.{gz,bz2,xz} Ich kann im selben Schritt herunterladen und dekomprimieren, ohne das komprimierte Archiv physisch auf dem Datenträger zu haben:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

Dies wird nur die unkomprimierten Dateien auf meiner Festplatte lassen und den gesamten Prozess beschleunigen, da ich nicht die Zeit nutze, zuerst die gesamte Datei herunterzuladen und nachdem der Download beendet ist, dekomprimiere ich ihn. Stattdessen entpacke ich es während des Downloads. Du kannst das nicht mit machen zip oder rar Dateien.


24



Ich weiß nichts über Rar (es ist ein schreckliches Programm, das nur scheinbar bei Piraten beliebt geworden ist, weil es sich in mehrere kleinere Dateien aufteilen kann), aber Sie können zip einfach streamen. Die Manpage erwähnt es sogar. Es hat auch den Vorteil, Dateien aus der Mitte eines großen Archivs effizient zu extrahieren oder zu aktualisieren, obwohl die Komprimierung tendenziell etwas besser wird. Komprimierung gegen wahlfreien Zugriff ist ein Kompromiss. - psusi
@psusi falsch. Du kannst Hacks machen wie Dies, aber was es tut, ist, die gesamte Datei im Speicher herunterzuladen und dann zu entpacken, anstatt sie während des Herunterladens zu entpacken. Und funzip extrahiert nur die erste Datei in der ZIP-Datei, nicht alle. - Carlos Campderrós
@Stu nur um zu klären, ist kein Problem, ist nur Ihre Zeit zu optimieren (Ich interessiere mich nicht für den Raum, wenn das ist, was Sie dachten) - Carlos Campderrós
Beide Seiten arbeiten: Man kann auf der einen Seite tarnen und in der anderen auch entpacken: tar zc /some/folder | ssh user@host "cd /other/folder && tar zx" - Carlos Campderrós
@psusi wie ich mich aus alten Zeiten erinnere, wenn ich pkzip verwende, um Dateien auf mehreren Disketten zu speichern, ziehe den Filialkatalog am Ende des Archivs. Es fordert immer die letzte Diskette zum Starten der Extraktion oder zum Anzeigen des Katalogs an. Damit en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg - Mikhail Moskalev


Es gibt mehrere Gründe, bei (GNU) Tar zu bleiben.

Es ist:

  • GPL lizenziert
  • gut im Sinne der Unix-Philosophie
    • Einzweckwerkzeug, das mehrere Aufgaben ausführen kann
  • gut dokumentiert und hat viele vertrauenswürdige Funktionen
  • kompatibel mit mehreren Komprimierungsalgorithmen
  • einfach zu bedienen und Menschen haben Gewohnheiten damit entwickelt
  • allgemein verfügbar
  • Ich fühle mich innerlich warm und verschwommen, wenn ich die Software von Anfang an benutze RMS (ohne Emacs)

Wenn Ihr spezielles Rindfleisch darin besteht, einen Tarball "dekomprimieren" zu müssen, bevor Sie den Inhalt lesen können, dann haben Sie wahrscheinlich Recht. WinRAR und 7-Zip mach es automatisch. Es gibt jedoch einfache Problemumgehungen für dieses Problem wie das Dokumentieren des Inhalts eines Archivs in einem unkomprimierten Formular.


13



Es ist freie Software - also sind viele von ihnen Es ist gut in dem, was es tut - kaum im Vergleich zu anderen Sachen Es ist gut dokumentiert und hat viele Funktionen - Features sind kaum benutzt und verabscheuungswürdig einfach zu bedienen. Es unterstützt mehrere Komprimierungsalgorithmen - nicht so viele wie einige andere - Griffin
Die Unix-Götter haben es erschaffen - also müssen wir es benutzen! - SnakeDoc
Tar speichert UNIX-Berechtigungen auch nativ und ist sehr gut bekannt und getestet. Es gibt mehr als ein paar Fälle, in denen man eine Reihe von Dateien in einer einzigen Datei oder einem Stream zusammenfassen, aber nicht unbedingt komprimieren muss. - LawrenceC
Zum Glück ist Tear nicht nur auf GNU-Versionen beschränkt. Während GNU Tar sicherlich ein gutes Stück Software ist, sind die mit libarchive + verwandten Frontends wesentlich schneller und einfacher in andere Softwareprojekte einzubetten. Sie können ein Argument für tar machen, ohne es in einen Lizenzkampf zu verwandeln. - Lucas Holt
Ich bin nicht sarkastisch. Ich mag RMS und die Art, wie er seine Überzeugungen ausübt. - Ярослав Рахматуллин


Dateiformate wie .zip benötigen die Software, um das Ende der Datei zuerst zu lesen, um einen Katalog von Dateinamen zu lesen. Umgekehrt speichert tar diese Information mit dem komprimierten Stream.

Der Vorteil der Teer-Methode besteht darin, dass Sie Daten dekomprimieren können, während Sie sie aus einer nicht suchbaren Pipe, z. B. einem Netzwerk-Socket, lesen.

Der Vorteil der Zip-Methode besteht darin, dass Sie für eine statische Datei auf der Festplatte den Inhalt und die Metadaten durchsuchen können, ohne zuerst das gesamte Archiv zu dekomprimieren.

Beide haben ihren Nutzen, je nachdem, was Sie tun.


11



Nein, Sie können zip-Dateien sowohl als Stream als auch als Pipe lesen und schreiben. - Mark Adler
Das kann dann implementationsspezifisch sein, wird aber sicherlich nicht vom ursprünglichen pkzip unterstützt. - xorsyst
Ja, die Software muss geschrieben werden, um sie zu unterstützen. Das Zip-Format unterstützt es vollständig, mit Datendeskriptoren, die den komprimierten Daten mit den Längen und CRC folgen können. - Mark Adler
@MarkAdler, welche Software? Infozip unterstützt nicht das Entpacken aus einer Pipe. - psusi
zlib.net/sunzip033.c.gz - Mark Adler


Es scheint eine gewisse Zurückhaltung zu geben, alle Ihre Fragen direkt zu beantworten, mit einer offensichtlichen Präferenz, Ihre Frage als Ausgangspunkt für die Pontifikation zu verwenden. Also werde ich es versuchen.

Gibt es eine Leistungseinbuße während der   Aggregations- / Komprimierungs- / Dekompressionsstufen für die Verwendung von tar   gekapselt in gzip oder bzip2, im Vergleich zu einem Dateiformat   das macht Aggregation und Komprimierung in der gleichen Datenstruktur?   Angenommen, die Laufzeit des zu vergleichenden Kompressors ist identisch (z.   gzip und Deflate sind ähnlich).

Nein. In der Tat, da tar und gzip normalerweise zwei Prozesse sind, erhalten Sie sogar einen kleinen Mehrkern-Geschwindigkeitsvorteil, den ein Archivierer wie der Info-ZIP-Zip nicht bietet. Was die Komprimierungsrate anbelangt, wird tar + gzip normalerweise merklich besser sein als zip mit deflate, da erstere von der Korrelation zwischen Dateien profitieren kann, während letztere die Dateien separat komprimiert. Dieser Komprimierungsvorteil führt zu einem Geschwindigkeitsvorteil beim Extrahieren, da ein komprimierteres Archiv in kürzerer Zeit dekomprimiert wird.

Gibt es Merkmale des TAR-Dateiformats, die andere Dateiformate,   wie .7z und .zip nicht haben?

Ja, Tar wurde für Unix entwickelt und hat sich im Laufe der Jahre weiterentwickelt, um jeden seltsamen kleinen Winkel von Unix-Dateisystemen, selbst das nackigere und gröbere Mac OS X Unix-Dateisystem, genau aufzuzeichnen und wiederherzustellen. zip kann einen Großteil der Metadaten wie Berechtigungen, Zeiten, Besitzer, Gruppen und symbolische Links behalten, aber immer noch nicht alles. Als ein Beispiel kann weder zip noch 7z Sparse-Dateien erkennen oder Vorteil ziehen, noch sind sie in der Lage, Hard Links wiederherzustellen oder in der Lage zu sein, sie wiederherzustellen.

Da tar ein so altes Dateiformat ist und neuere Dateiformate existieren   heute, warum ist tar (ob eingekapselt in gzip, bzip2 oder sogar die neue   xz) heute noch so weit verbreitet unter GNU / Linux, Android, BSD und anderen   solche UNIX-Betriebssysteme, für Dateiübertragungen, Programmquellen und   Binärdownloads und manchmal sogar als Paketmanagerformat?

Viele andere gute Antworten hierauf. Das Beste ist das es funktioniert einfach, und Sie können es auf bessere Komprimierungsformate (z. B. xz) aktualisieren und immer noch das gleiche tar-Format und sogar das gleiche kompilierte tar-Dienstprogramm verwenden. Wenn Sie nur ein paar Sachen zusammenpacken und dann alles auf der anderen Seite auspacken wollen, dann gibt es wenig Grund, irgendetwas anderes als eine der ältesten, vollständigsten und am meisten fehlerbehafteten Softwareteile zu verwenden.

Wenn Sie einen wahlfreien Zugriff, Teilupdates oder andere Dinge wünschen, die sich mit den Inhalten stückweise befassen müssen, oder wenn Sie in der Lage sein möchten, herauszufinden, was darin enthalten ist, ohne das Ganze zu lesen, dann sollten Sie ein anderes Format verwenden.


11



CW steht für Community Wiki. Siehe auch Was sind "Community Wiki" Beiträge?. - ctype.h
Ich denke, es ist CW, weil die Frage mehr als 15 Antworten hat. Als Sie diese Antwort gepostet haben, weil es der 15. ist, wurden die Frage und alle Antworten mit CW markiert. - ctype.h
Ich sehe nicht, wie diese Antwort etwas sagt, was keine der anderen Antworten tut, außer direkt die Fragen zu zitieren (die ich geschrieben habe, BTW, weil die ursprüngliche Überarbeitung der Frage so schrecklich war, dass sie als NARQ geschlossen wurde). Trotzdem netter Versuch. - allquixotic
Um OK. Was auch immer Sie gerne denken würden, ist in Ordnung. Ihre Antwort oder eine andere Antwort scheint zu beantworten, ob es eine Leistungseinbuße gibt. Ihre Antwort adressiert nicht die merkliche Kompressionsdifferenz, obwohl andere dies tun. Da Ihre Leistung nicht wirklich auf Leistung ausgerichtet ist (in Ihrem Leistungsabschnitt geht es eigentlich um Workflow, nichts über Leistung), beantwortet keine andere Antwort alles an einem Ort. Es ist interessant, dass Sie die Performance-Penalty-Frage geschrieben haben, aber Sie haben nicht darauf geantwortet! Stelle dir das vor. - Mark Adler
Übrigens geht es bei Ihrer Workflow-Diskussion um etwas, das niemand tut, nämlich eine TAR-Datei auf eine Festplatte zu schreiben und sie dann zu komprimieren. tar wird immer verwendet, wenn das Komprimierungsprogramm direkt oder direkt in einer Pipe zu einem Komprimierungsprogramm aufgerufen wird. - Mark Adler


Performance

Der große Unterschied ist die Reihenfolge, in der die Komprimierung und Archivierung erfolgt. tar Archive, dann kann optional das Archiv an einen Kompressor senden, und zip baut das Archiv auf und komprimiert die Dateidaten in Blöcken von 32 KB, wenn sie in das Archiv eingefügt werden. Indem Sie die Dateidaten in kleine Abschnitte aufteilen und sie einzeln komprimieren, können Sie bestimmte Dateien oder Teile von Dateien extrahieren, ohne alles im Archiv vorher dekomprimieren zu müssen. Es verhindert auch, dass der Kompressor vor dem Neustart ein sehr großes Wörterbuch erstellt. Dies bedeutet, dass die Komprimierung schneller geht, aber nicht so gut ist, wie das Komprimieren des Ganzen mit einer größeren Wörterbuchgröße.

Sie können es visualisieren, indem Sie an zwei Dateien denken, wobei die ersten 500 Bytes der zweiten Datei die gleichen sind wie die letzten 500 Bytes der ersten Datei. Mit dem zip Methode, der Kompressor wird für die zweite Datei neu gestartet, so dass nicht daran erinnert, dass die erste Datei in den gleichen Daten endete, so dass es die doppelten Daten aus der zweiten Datei nicht entfernen kann.

Popularität

Es gibt viele andere Formate, die eine Reihe von Vorteilen haben tar. 7-Zip speichert keine Unix-Dateiberechtigungen, aber dar tut, und zip kann, und alle drei speichern einen Index, der schnelles Browsen, Extrahieren einer Teilmenge von Dateien und Aktualisieren von Dateien innerhalb des Archivs ermöglicht. Sie können auch Multi-Core-CPUs für die Komprimierung verwenden.

Der Grund, warum jeder noch benutzt tar Aus demselben Grund benutzen alle immer noch Windows und Blitz: Leute mögen keine Veränderung. Ohne einen starken Grund, sich zu ändern, bleiben die Menschen einfach bei dem, was sie wissen. dar bietet nicht genug Vorteile, um die Veröffentlichung von Dateien in dem Format zu rechtfertigen, in dem die meisten Leute bereits sind tar installiert, und nur sehr wenige wissen dar, so einfache Trägheit hält uns auf dem alten Standard.


11



ZIP kann die Unix-Berechtigungen speichern und wiederherstellen. Die Zip und Unzip Utilities von InfoZIP, die normalerweise mit dem Unix-System verteilt werden, tun dies. - Mark Adler
Zip komprimiert die Datei nicht in 32 KB-Blöcken. Sie verwechseln die Gleitfenstergröße von 32 KB mit der Art der Komprimierung. - Mark Adler
gzip -9 hat kein 900 kB Wörterbuch. Alle Ebenen von gzip verwenden ein 32K-Wörterbuch. Vielleicht denken Sie an bzip2. - Mark Adler
So viel Fehlinformation in einer Antwort. - Mark Adler
Sie müssen entweder Korrekturen an Ihrer Antwort vornehmen oder Ihre Antwort löschen. - Mark Adler