Was ist der Vorteil der heutigen Verwendung von "Teer"?


209

Ich weiß, dass dies tarfrüher für Bandarchive gemacht wurde, aber heute haben wir Archivdateiformate, die sowohl Dateien aggregieren als auch Komprimierungen innerhalb desselben logischen Dateiformats durchführen.

Fragen:

  • Gibt es während der Aggregations- / Komprimierungs- / Dekomprimierungsphasen Leistungseinbußen für die Verwendung von tarEncapsulated In gzipoder bzip2im Vergleich zur Verwendung eines Dateiformats, das Aggregation und Komprimierung in derselben Datenstruktur ausführt? Angenommen, die Laufzeit des zu vergleichenden Kompressors ist identisch (z. B. gzip und Deflate sind ähnlich).

  • Gibt es Funktionen des tarDateiformats, die andere Dateiformate wie .7zund .zipnicht haben?

  • Da tarso ein altes Dateiformat ist, und neuere Dateiformate gibt es heute, warum ist tar(ob in verkapselter gzip, bzip2oder auch die neuen xz) noch so weit heute auf GNU / Linux, Android, BSD und andere solche UNIX - Betriebssystemen, für Datei verwendet Übertragungen, Programmquellen- und Binärdownloads und manchmal sogar als Paketmanager-Format?


33
Ich bin nicht einverstanden, 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 Sie meinen, es verschwendet Ihre Zeit, ich sehe nicht, wie tar xvzfist schwieriger als 7z -x...
allquixotic

41
Er scheint die Tatsache zu beklagen, dass tar zu Beginn keinen Katalog speichert. Daher müssen GUI-Komprimierungs-Tools, die den Inhalt vor dem Extrahieren auflisten möchten, den gesamten Teer dekomprimieren, nur um den Inhalt aufzulisten, und ihn dann beim Extrahieren erneut dekomprimieren .
Psusi

10
@MarcusJ: Du denkst, 7z weiß auf magische Weise, wo jede Datei in einem Archiv beginnt? Außerdem funktionieren die üblichen Komprimierungsalgorithmen (gzip, bzip2) mit dem Streamen des Inhalts: Es ist nicht erforderlich, die erste Stufe vor der nächsten zu 100% abzuschließen.
souser12345

11
@MarcusJ Sie scheinen auch zwei verschiedene Dinge zu verwechseln: Wenn Sie dies tun tar xvzf, werden die unkomprimierten Daten nicht im .tarFormat auf die Festplatte geschrieben ! Sie haben Recht, wenn Sie ausgeführt gunzip blah.tar.gzund dann tar xf blah.tar, würde es die Daten zweimal auf die Festplatte schreiben (einmal als .tar und wieder als Dateien im Dateisystem), aber niemand tut es tatsächlich so. Der tar xzfverwendet eine UNIX-Pipe (im Grunde genommen eine Speicherkopie), um die unkomprimierten Daten von gzip(oder einem beliebigen Kompressor) zu übertragen tar, sodass die Daten nicht im .tarFormat auf die Festplatte geschrieben werden .
allquixotic

14
Eine Sache, die ich kenne, ist, dass sich tar(besonders komprimiert) schrecklich verhält, wenn es um Datenkorruption geht. Kleine Redundanz- / Wiederherstellungsdaten, die durch moderne Formate hinzugefügt wurden, sind Gold wert
PPC

Antworten:


178

Teil 1: Leistung

Hier sehen Sie einen Vergleich zwischen zwei separaten Workflows und deren Funktionsweise.

Sie haben eine Datei auf der Festplatte blah.tar.gz, dh 1 GB gzip-komprimierte Daten, die im unkomprimierten Zustand 2 GB belegen (also eine Komprimierungsrate von 50%).

Die Art und Weise, wie Sie dies erstellen würden, wenn Sie Archivierung und Komprimierung separat durchführen würden, wäre:

tar cf blah.tar files ...

Dies würde dazu führen, blah.tardass es sich lediglich um eine Aggregation der files ...in unkomprimierter Form handelt.

Dann würdest du tun

gzip blah.tar

Dies würde den Inhalt von blah.tarder Festplatte lesen , ihn durch den gzip-Komprimierungsalgorithmus komprimieren, den Inhalt in blah.tar.gzdie Datei schreiben und dann die Verknüpfung aufheben (die Datei löschen) blah.tar.

Nun lasst uns dekomprimieren!

Weg 1

Sie haben blah.tar.gzso oder so.

Sie entscheiden sich zu laufen:

gunzip blah.tar.gz

Dieser Wille

  • LESEN Sie die 1 GB komprimierten Dateninhalte von blah.tar.gz.
  • VERARBEITEN Sie die komprimierten Daten durch den gzipDekomprimierer im Speicher.
  • Wenn sich der Speicherpuffer mit Daten im Wert von "einem Block" füllt, SCHREIBEN Sie die nicht komprimierten Daten in die Datei blah.tarauf der Festplatte und wiederholen Sie den Vorgang , bis alle komprimierten Daten gelesen sind.
  • Verknüpfung der Datei aufheben (löschen) blah.tar.gz.

Jetzt haben Sie eine blah.tarFestplatte, die nicht komprimiert ist, jedoch 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.

Sie laufen:

tar xvf blah.tar

Dieser Wille

  • LESEN SIE die 2 GB unkomprimierten Dateninhalte blah.tarund die Datenstrukturen des tarDateiformats, einschließlich Informationen zu Dateiberechtigungen, Dateinamen, Verzeichnissen usw.
  • SCHREIBEN Sie die 2 GB Daten plus die Metadaten auf die Festplatte. Dies umfasst Folgendes: Konvertieren der Datenstruktur- / Metadateninformationen in das Erstellen neuer Dateien und Verzeichnisse auf der Festplatte oder Neuschreiben vorhandener Dateien und Verzeichnisse mit neuen Dateninhalten.

Die gesamten Daten wir GELESEN von der Festplatte in diesem Prozess betragen 1 GB (für gunzip) + 2 GB (für tar) = 3 GB.

Die Gesamtdaten wir WROTE in diesem Verfahren auf die Platte betrug 2 GB (für gunzip) + 2 GB (für tar) + wenige Bytes für Metadaten = ungefähr 4 GB.

Weg 2

Sie haben blah.tar.gzso oder so.

Sie entscheiden sich zu laufen:

tar xvzf blah.tar.gz

Dieser Wille

  • LESEN Sie den 1 GB großen komprimierten Dateninhalt blah.tar.gzeines Blocks nach dem anderen in den Speicher.
  • VERARBEITEN Sie die komprimierten Daten durch den gzipDekomprimierer im Speicher.
  • Da der Speicherpuffer voll ist , wird es Rohr dieser Daten im Speicher, bis zum tarDateiformat - Parser, der die Informationen über die Metadaten gelesen werden usw. , und die unkomprimierten Dateidaten.
  • Wenn der Speicher im tarDatei-Parser voll ist, werden die nicht komprimierten Daten auf die Festplatte geschrieben, indem Dateien und Verzeichnisse erstellt und mit den nicht komprimierten Inhalten gefüllt werden.

Die Gesamtdaten, die wir in diesem Prozess von der Festplatte gelesen haben, waren 1 GB komprimierte Daten (Zeitraum).

Die Gesamtdaten wir WROTE in diesem Verfahren auf die Platte betrug 2 GB unkomprimierter Daten + wenige Bytes für Metadaten = etwa 2 GB.

Wenn Sie bemerken, die Menge der Disk - I / O in Way 2 ist identisch zu der Platte / I O durchgeführt von, sagen wir, den Zipoder 7-Zip - Programme für alle Unterschiede in Verdichtungsverhältnis einzustellen.

Und wenn das Komprimierungsverhältnis Ihr Anliegen ist, verwenden Sie den XzKompressor, um zu kapseln tar, und Sie haben LZMA2'ed TAR-Archiv, das genauso effizient ist wie der fortschrittlichste Algorithmus, der für 7-Zip verfügbar ist :-)

Teil 2: Eigenschaften

tar speichert Unix-Berechtigungen in seinen Dateimetadaten und ist sehr bekannt und getestet für das erfolgreiche Packen eines Verzeichnisses mit verschiedenen Berechtigungen, symbolischen Links usw. Es gibt mehr als nur wenige Fälle, in denen eine Reihe von Dateien globalisiert werden müssen in eine einzelne Datei oder einen Stream, aber nicht unbedingt komprimiert (obwohl die Komprimierung nützlich ist 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 niedrigsten gemeinsamen Nenner handelt: Ähnlich wie die meisten Windows-Benutzer haben auch die meisten Linux-Installationen Zugriff auf .zip- oder .rar-Dekomprimierer Selbst die grundlegendsten werden Zugang zu mindestens Teer und Gunzip haben, egal wie alt oder reduziert. Sogar Android-Firmwares haben Zugriff auf diese Tools.

Neue Projekte, die sich an Benutzer mit modernen Distributionen richten, werden möglicherweise in einem moderneren Format wie .tar.xz (unter Verwendung des Xz-Komprimierungsformats (LZMA), das besser komprimiert als gzip oder bzip2) oder .7z (ähnlich wie gzip) verbreitet Das ZIP- oder RAR- Dateiformat komprimiert und spezifiziert ein Layout zum Einkapseln mehrerer Dateien in eine einzelne Datei.

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


Ein großes Lob für die großartige Antwort mit allen Inhalten, die unter drei verschiedenen Überschriften getrennt sind.
JFW

2
"Teil 3: Kompatibilität" scheint aus der Antwort von @ Kruug kopiert worden zu sein.
Titandecoy

23
@titaniumdecoy Hast du bemerkt, dass es allquixotic war, der diesen Teil ursprünglich geschrieben und in Kruugs Antwort bearbeitet hat?
Slhck

2
Vielen Dank für den Hinweis, ich habe es nicht bemerkt. Es kommt mir jedoch ein bisschen albern vor, einen identischen Textblock in zwei verschiedenen Antworten auf dieser Seite zu haben.
Titandecoy

1
Dies ist die Antwort darauf, warum es tarin das Archivierungs-Ökosystem passt (dh, Dateien zusammenzufassen, um die Leistung zu steigern und einige andere Vorteile wie das Speichern von Berechtigungen zu erzielen), aber es wird nicht angesprochen, warum moderne Alternativen wie z. B. darnicht verwendet werden. Mit anderen Worten, diese Antwort rechtfertigt die Verwendung von Dateiaggregatoren, nicht jedoch der tarSoftware an sich.
Gaborous

101

Dies wurde beim Stack Overflow beantwortet .

bzip und gzip arbeiten mit einzelnen Dateien, nicht mit Dateigruppen. Normales altes zip (und pkzip) verarbeiten Dateigruppen und haben das Konzept des Archivs eingebaut.

Die * nix-Philosophie ist eines der kleinen Tools, die bestimmte Aufgaben sehr gut erledigen und miteinander verkettet werden können. Aus diesem Grund gibt es hier zwei Tools, die bestimmte Aufgaben haben und so konzipiert sind, dass sie gut zusammenpassen. Es bedeutet auch, dass Sie tar zum Gruppieren von Dateien verwenden können und dann eine Auswahl an Komprimierungswerkzeugen (bzip, gzip usw.) haben.

Viele Tools werden in Quell- oder Binärform als .tar.gz oder .tar.bz2 verteilt, da es sich um ein Dateiformat mit dem niedrigsten gemeinsamen Nenner handelt: Ähnlich wie die meisten Windows-Benutzer haben auch die meisten Linux-Installationen Zugriff auf .zip- oder .rar-Dekomprimierer Selbst die einfachsten werden Zugang zu mindestens tarund haben gunzip, egal wie alt oder reduziert. Sogar Android-Firmwares haben Zugriff auf diese Tools.

Neue Projekte, die sich an Zielgruppen mit modernen Distributionen richten, werden möglicherweise in einem moderneren Format verbreitet, z. B. .tar.xz(unter Verwendung des Komprimierungsformats Xz ( LZMA ), das besser komprimiert als gzip oder bzip2) oder .7z, das ZIP oder RAR ähnelt Dateiformate, indem es sowohl komprimiert als auch ein Layout zum Einkapseln mehrerer Dateien in eine einzelne Datei festlegt.

Sie sehen .7z nicht öfter verwendet, aus dem gleichen Grund, dass Musik nicht in brandneuen Formaten wie Opus oder Video in WebM aus Online-Download-Stores verkauft wird . Die Kompatibilität mit Leuten, die alte oder sehr einfache Systeme betreiben, ist wichtig.


7
Hallo @Kruug, ich bearbeitet Ihren Beitrag nur eine praktische Perspektive zu geben, warum die Menschen immer noch wählen , diese Formate zu verwenden , wenn sie eine Wahl zu verwenden , etwas anderes haben. Ich habe den Text, den Sie bereits hatten, nicht geändert. Dies dient nur dazu, sicherzustellen, dass die scheinbar kanonische Antwort auf diese Frage das vollständige Bild ergibt. Fühlen Sie sich frei, meine Bearbeitung zu bearbeiten, wenn Sie wollen :)
allquixotic

5
@allquixotic Inception jemand? Bearbeiten oder bearbeiten, damit du eine
Änderung vornehmen kannst.

21
Diese Antwort ist definitiv ein Fall von "Ich bin manchmal von unverdienten Gegenstimmen überwältigt". Es geht nicht auf das Kernproblem der Frage ein, das darin besteht, den Inhalt von komprimiertem Teer aufzulisten, und es ist nicht einmal eine originelle Antwort!
Ярослав Рахматуллин

5
-1 für große Gerechtigkeit. Das hätte ein Kommentar sein sollen.
Mittwoch,

6
Ich kaufe nicht das Argument des Erbes / kleinsten gemeinsamen Nenners. Ich erinnere mich, dass auf neuen Systemen (Sonne) häufig gzip / gunzip (von sunfreeware) heruntergeladen werden muss, um andere tar.gz-Softwarepakete zu installieren (plus Gnu-Teer, da Suns Teer gesaugt hat). Für Legacy / Lower Common Denominator hatten Sie tar.Z(Komprimieren / Dekomprimieren). Die Entwicklung der Hilfsprogramme war ein ständiger Strom von Änderungen und Verbesserungen (kein Wortspiel beabsichtigt): Z => zip => gz => bz2 => 7z => xz (oder in welcher Reihenfolge auch immer). In Bezug auf die Rolle von tar dekomprimieren / komprimieren einige Utils nur und benötigen weiterhin tar, um die Dateihierarchien zu bündeln.
Michael

63

Tar verfügt über zahlreiche Operationen und Modifikatoren, die sich mit Unix-Dateisystemen auskennen. Es kennt Unix-Berechtigungen, die unterschiedlichen Zeiten, die mit Dateien verknüpft sind, Hardlinks und Softlinks (und die Möglichkeit, dass symbolische Links Zyklen in das Dateisystemdiagramm einführen können) und bietet Ihnen die Möglichkeit, verschiedene Möglichkeiten für die Verwaltung all dieser Daten anzugeben .

  • Möchten Sie, dass die extrahierten Daten die Dateizugriffszeiten beibehalten? Tar kann das. Um Berechtigungen zu erhalten? Tar kann das.

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

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

  • Möchten Sie mit spärlichen Dateien gut umgehen können? Tar kann das.

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

  • Möchten Sie auf ein Raw-Gerät schreiben oder von diesem wiederherstellen? Tars Format ist dafür gut geeignet.

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

  • Möchten Sie sichergehen, dass Sie nicht mehr als ein Dateisystem archivieren? Tar kann das.

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

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

  • Müssen Sie Geräteknoten (wie die Dateien in /dev) beibehalten , damit das System nach dem Extrahieren ordnungsgemäß ausgeführt wird? Tar kann das.

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


12
Sie brauchen GNU tar nicht, um einen beliebigen Kompressor zu verwenden: Sagen Sie einfach tar, dass es das Archiv schreiben soll, mit dem es ausgegeben werden soll, f -und leiten Sie es an den Kompressor weiter.
Ilmari Karonen

3
"Möchten Sie unkomprimierte Daten (warum?)?" Ich verwende tarsehr oft, um einen Dateisystembaum von einem Ort an einen anderen zu kopieren und Berechtigungen usw. beizubehalten, und die Komprimierung erfordert in diesem Fall nur zusätzliche CPU-Zyklen. Eg tar cf - * | tar xf - -C /somewhere.
Steve

1
Außerdem möchten Sie eine TAR-Datei, wenn das Zieldateisystem eine Deduplizierung durchführt. Durch das Erstellen komprimierter Archive auf einem Dateisystem, das eine Deduplizierung durchführt, wird die Deduplizierungsrate erheblich verringert. Beispiel: Wir haben einmal eine $ 10,000.00 tar.gz-Datei gelöscht. Dies bedeutete, dass Speicherplatz im Wert von 10.000 US-Dollar in Anspruch genommen wurde, weil jemand Komprimierung verwendet hatte.
Aaron

Bei Algorithmen wie LZ4 oder LZO sind @Steve-CPU-Zyklen möglicherweise billiger als Festplatten-E / A. Deshalb sind sie in zram gewohnt sind, und transparente Kompression Dateisysteme wie NTFS, ZFS, Btrfs ... so manchmal ist es tatsächlich schneller als da die Menge der Festplatte zu komprimieren IO stark reduziert
phuclv

30

Sie verwechseln die beiden unterschiedlichen Prozesse der Archivierung und Komprimierung .

Gründe für die Verwendung eines Archivierers

Ein Grund für die Verwendung der Archivierung ohne Komprimierung besteht beispielsweise darin, dass mehrere Dateien von einem Host auf einen anderen kopiert werden. 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 komprimiert werden können oder wenn SSH mit Komprimierung eingerichtet ist, kann dies erhebliche CPU-Zeit sparen. Klar, man kann ein moderneres Komprimierungswerkzeug mit Archivierungsfunktion verwenden und die Komprimierung ausschalten. Der Vorteil tarist, dass ich davon ausgehen kann, dass es auf jedem System verfügbar ist.

Gründe für die Verwendung eines Archivierungsprogramms mit GZIP-Komprimierung

Ein Grund dafür , dass ich tarmit gzipist: Geschwindigkeit! Wenn ich ein paar GB Textdateien von einem Ort zum anderen übertragen möchte, ist es mir egal, ob ich die letzten Bytes auspresse, da die Komprimierung nur für den Transport und nicht für die Langzeitspeicherung verwendet wird. In diesen Fällen nutze ich gzip, was die CPU nicht ausschöpft (im Gegensatz zu 7-Zip zum Beispiel), was bedeutet, dass ich wieder E / A- gebunden bin und nicht CPU-gebunden. Und nochmal: gzipKann als überall verfügbar angesehen werden.

Gründe für den Einsatz tarzugunsten von scp, rsyncusw.

Es schlägt sich, scpwenn Sie viele kleine Dateien kopieren müssen (zum Beispiel ein Mail-Verzeichnis mit hunderttausenden Dateien). rsync, so großartig es ist, ist möglicherweise nicht überall verfügbar. Außerdem rsynclohnt es sich nur, wenn ein Teil der Dateien - oder eine ältere Version - bereits auf dem Ziel vorhanden ist. Denn die Erstkopie tarist die schnellste, mit oder ohne Komprimierung, abhängig von den tatsächlichen Daten.


1
Aber wenn Sie archivieren wollen, warum nicht auch komprimieren? Okay, ja, es kann Zeit sparen für Dateien, die nicht leicht komprimiert werden können, aber dann sollten Archivare wahrscheinlich wissen, dass Musik zum Beispiel mit Ausnahme der Header nicht sehr komprimierbar ist.
MarcusJ

2
Möglicherweise müssen Sie das nicht, oder Ihr Inhalt ist möglicherweise nicht komprimierbar.
Hasturkun

4
Aus Leistungsgründen ist es häufig einfacher, die unkomprimierte Dateizusammenfassung 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 möglich; Nur wenige gut konzipierte Komprimierungsalgorithmen, die auch ein sehr schlechtes Komprimierungsverhältnis aufweisen, können Daten selbst auf einer großen Desktop-CPU so schnell komprimieren. Auf einem eingebetteten Gerät haben Sie noch weniger CPU-Zeit zum Arbeiten.
Allquixotic

3
Dies beschleunigt nicht nur die Dinge, sondern ermöglicht auch das Beibehalten von Dateieigentum, Zeitstempeln und Attributen (sofern die Benutzerberechtigungen dies zulassen)
Andre Holzner

3
@AndreHolzner Richtig. Das mache ich oft tar cf - . | (cd ~/somewhere; tar xvf -). Es ist sehr nützlich, nicht warten zu müssen, bis der zentrale Index geschrieben ist (wie zum Beispiel in einer Zip-Datei).
user239558

24

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

Ich muss eine im Internet verfügbare Datei dekomprimieren. Entweder mit zipoder rarFormate muss ich es zuerst herunterladen und dann dekomprimieren. Mit tar.{gz,bz2,xz}kann ich im selben Schritt herunterladen und dekomprimieren, ohne das komprimierte Archiv physisch auf der Festplatte haben zu müssen:

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

Dadurch verbleiben nur die nicht komprimierten Dateien auf meiner Festplatte und der gesamte Vorgang wird beschleunigt, da ich nicht darauf verzichte, erst die gesamte Datei herunterzuladen und sie nach Abschluss des Downloads zu dekomprimieren. Stattdessen dekomprimiere ich es, während es heruntergeladen wird. Sie können dies nicht mit zipoder rarDateien tun .


2
Ich kenne rar nicht (es ist ein schreckliches Programm, das wegen seiner Fähigkeit, sich in mehrere kleinere Dateien aufzuteilen, nur bei Piraten beliebt geworden zu sein scheint), aber Sie können Zip ganz gut streamen. Die Manpage erwähnt es sogar. Es hat auch den Vorteil, dass Dateien aus der Mitte eines großen Archivs effizient extrahiert oder aktualisiert werden können, obwohl tar tendenziell etwas besser komprimiert wird. Komprimierung im Vergleich zu wahlfreiem Zugriff ist ein Kompromiss.
Psusi

3
@psusi falsch. Sie können Hacks wie tun dies , aber was es tut , ist die ganze Datei im Speicher herunterladen und dann entpacken, statt unzipping beim Herunterladen. Und funzipextrahiert nur die erste Datei in der Zip-Datei, nicht alle.
Carlos Campderrós

2
@Stu nur um zu verdeutlichen, ist kein Problem, optimiert nur Ihre Zeit (ich kümmere mich nicht um Platz, wenn das, was Sie dachten)
Carlos Campderrós

1
Beide Seiten funktionieren: Sie können auf der einen Seite Teer und auf der anderen Seite Teer entfernen:tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Carlos Campderrós

1
@psusi, wie ich mich aus alten Zeiten erinnere, als ich pkzip zum Speichern von Dateien auf mehreren Disketten verwendete, zip store catalogue am Ende des Archivs. Es wird immer die letzte Diskette angefordert, um die Extraktion zu starten oder den Katalog anzuzeigen. Also en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg
Mikhail Moskalev

13

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

Es ist:

  • GPL lizenziert
  • gut im Sinne der Unix-Philosophie
    • Ein einziges Werkzeug, das mehrere Aufgaben ausführen kann
  • gut dokumentiert und hat viele vertrauenswürdige Funktionen
  • Kompatibel mit mehreren Kompressionsalgorithmen
  • einfach zu bedienen und die menschen haben gewohnheiten damit entwickelt
  • breit verfügbar
  • Ich fühle mich warm und unscharf, wenn ich Software verwende, die von RMS gestartet wurde (außer 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 machen das automatisch. Es gibt jedoch einfache Problemumgehungen, z. B. das Dokumentieren des Inhalts eines Archivs in unkomprimierter Form.


1
Es ist freie Software - so viele von ihnen. Es ist gut in dem, was es tut. Kaum zu vergleichen mit anderen Dingen. Es ist gut dokumentiert und hat viele Funktionen. Funktionen werden kaum benutzt und sind einfach zu benutzen. Es unterstützt mehrere Komprimierungsalgorithmen - nicht so viele wie andere
Griffin

4
Die Unix-Götter haben es erschaffen - deshalb müssen wir es benutzen!
SnakeDoc

28
Tar speichert auch UNIX-Berechtigungen nativ und ist sehr bekannt und getestet. Es gibt mehr als ein paar Fälle, in denen ein Bündel von Dateien in eine einzelne Datei oder einen Stream integriert, aber nicht unbedingt komprimiert werden muss.
LawrenceC

3
Zum Glück ist tar nicht nur auf GNU-Versionen beschränkt. Während GNU tar sicherlich eine gute Software ist, sind libarchive + bezogene Frontends viel schneller und einfach in andere Softwareprojekte einzubetten. Sie können ein Argument für Teer vorbringen, ohne es in einen Lizenzkampf zu verwandeln.
Lucas Holt

1
Ich bin nicht sarkastisch. Ich mag RMS und die Art und Weise, wie er seinen Glauben ausübt.
Ярослав Рахматуллин

11

Dateiformate wie ZIP benötigen die Software das Ende der Datei zu lesen , zuerst einen Katalog von Dateinamen zu lesen. Umgekehrt speichert tar diese Informationen im komprimierten Stream.

Der Vorteil der tar-Methode besteht darin, dass Sie Daten dekomprimieren können, während Sie sie von einer nicht durchsuchbaren Pipe wie 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 das gesamte Archiv dekomprimieren zu müssen.

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


5
Nein, Sie können ZIP-Dateien als Stream von und zu einer Pipe lesen und schreiben.
Mark Adler

Das mag dann implementierungsspezifisch sein, wird aber vom ursprünglichen pkzip sicher nicht unterstützt.
Xorsyst

1
Ja, die Software muss zur Unterstützung geschrieben werden. 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 das Entpacken aus einer Pipe nicht.
Psusi


11

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 während der Aggregations- / Komprimierungs- / Dekomprimierungsphasen Leistungseinbußen für die Verwendung von in gzip oder bzip2 gekapseltem Teer im Vergleich zur Verwendung eines Dateiformats, das Aggregation und Komprimierung in derselben Datenstruktur ausführt? Angenommen, die Laufzeit des zu vergleichenden Kompressors ist identisch (z. B. gzip und Deflate sind ähnlich).

Nein. Da tar und gzip in der Regel zwei Prozesse sind, erhalten Sie sogar einen Hauch von Multi-Core-Geschwindigkeitsvorteil, den ein Archivierer wie Info-ZIPs zip nicht bietet. In Bezug auf das Komprimierungsverhältnis ist tar + gzip normalerweise deutlich besser als zip mit deflate, da erstere von der Korrelation zwischen Dateien profitieren können, während letztere Dateien separat komprimieren. Dieser Komprimierungsvorteil führt zu einem Geschwindigkeitsvorteil beim Extrahieren, da ein stärker komprimiertes Archiv in kürzerer Zeit dekomprimiert wird.

Gibt es Funktionen des Dateiformats tar, 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 kleinen Fehler von Unix-Dateisystemen genau aufzuzeichnen und wiederherzustellen, selbst das unkonventionellere Mac OS X Unix-Dateisystem. zip ist in der Lage, einen Großteil der Metadaten wie Berechtigungen, Zeiten, Eigentümer, Gruppen und symbolische Links beizubehalten, aber immer noch nicht alles. Zum Beispiel können weder zip noch 7z spärliche Dateien erkennen oder nutzen, noch sind sie in der Lage, feste Links wiederherzustellen.

Da tar ein so altes Dateiformat ist und es heutzutage neuere Dateiformate gibt, warum wird tar (ob in gzip, bzip2 oder sogar dem neuen xz gekapselt) unter GNU / Linux, Android, BSD und anderen UNIX-Betriebssystemen immer noch so häufig verwendet Betriebssysteme, für Dateiübertragungen, Programmquellen- und Binärdownloads und manchmal sogar als Paketmanager-Format?

Viele andere gute Antworten hierauf. Das Beste ist, dass es einfach funktioniert und Sie es weiterhin auf bessere Komprimierungsformate (z. B. xz) aktualisieren können und dennoch dasselbe tar-Format und sogar dasselbe kompilierte tar-Dienstprogramm verwenden können. Wenn Sie nur ein paar Dinge packen und dann alles auf der anderen Seite auspacken möchten, gibt es kaum einen Grund, etwas anderes als eine der ältesten, vollständigsten und am häufigsten getesteten Softwarekomponenten zu verwenden.

Wenn Sie zufällige Zugriffe, Teilaktualisierungen oder andere Dinge benötigen, die sich nur stückweise mit dem Inhalt befassen, oder wenn Sie herausfinden möchten, was sich darin befindet, ohne das Ganze zu lesen, möchten Sie ein anderes Format verwenden.


CW steht für Community Wiki . Siehe auch Was sind "Community Wiki" -Postings? .
ctype.h

Ich denke, es ist CW, weil die Frage mehr als 15 Antworten hat. Als Sie diese Antwort gepostet haben, wurden die Frage und alle Antworten mit CW markiert, da es sich um die 15. handelt.
ctype.h

Ich verstehe nicht, wie diese Antwort etwas aussagt, was keine der anderen Antworten sagt, außer die Fragen direkt zu zitieren (was ich übrigens geschrieben habe, weil die ursprüngliche Revision der Frage schrecklich genug war, um als NARQ abgeschlossen zu werden). Trotzdem netter Versuch.
Allquixotic

Um OK. Was auch immer Sie denken möchten, ist in Ordnung. Ihre Antwort oder irgendeine andere Antwort scheint zu klären, ob es eine Leistungsstrafe gibt. Ihre Antwort geht nicht auf den merklichen Komprimierungsunterschied ein, obwohl andere dies tun. Da sich Ihre Frage nicht mit der Leistung befasst (in Ihrem Leistungsbereich geht es eigentlich um den Workflow, nicht um die Leistung), beantwortet keine andere Antwort alles an einem Ort. Es ist interessant, dass Sie die Frage zur Leistungsstrafe geschrieben haben, aber nicht beantwortet haben! Stelle dir das vor.
Mark Adler

Übrigens geht es in Ihrer Workflow-Diskussion um etwas, das noch nie jemand gemacht hat, nämlich das Schreiben einer TAR-Datei auf eine Festplatte und das anschließende Komprimieren. tar wird immer verwendet, wenn das Komprimierungsprogramm direkt oder direkt in eine Pipe zu einem Komprimierungsprogramm aufgerufen wird.
Mark Adler

11

Performance

Der große Unterschied besteht in der Reihenfolge, in der die Komprimierung und Archivierung durchgeführt wird. tarArchive können dann optional an einen Komprimierer zipgesendet und das Archiv aufgebaut und die Dateidaten beim Einfügen in das Archiv in 32-KB-Blöcke komprimiert werden. Indem Sie die Dateidaten in kleine Teile aufteilen und separat komprimieren, können Sie bestimmte Dateien oder Teile von Dateien extrahieren, ohne alles im Archiv zuvor dekomprimieren zu müssen. Außerdem wird verhindert, dass der Kompressor vor dem Neustart ein sehr großes Wörterbuch erstellt. Dies bedeutet, dass die Komprimierung schneller erfolgt, jedoch nicht so gut ist wie die Komprimierung des gesamten Objekts mit einem größeren Wörterbuch.

Sie können dies visualisieren, indem Sie an zwei Dateien denken, bei denen die ersten 500 Bytes der zweiten Datei mit den letzten 500 Bytes der ersten Datei identisch sind. Bei dieser zipMethode wird der Kompressor für die zweite Datei neu gestartet. Erinnert sich also nicht daran, dass die erste Datei mit denselben Daten endete, sodass die doppelten Daten nicht aus der zweiten Datei entfernt werden können.

Popularität

Es gibt viele andere Formate, die eine Reihe von Vorteilen gegenüber haben tar. 7-Zip speichert keine Unix - Dateiberechtigungen, aber der darFall ist, und zipkann, und alle drei Speichern eines Index, der für schnelles Surfen ermöglicht die Extraktion einer Teilmenge von Dateien und Aktualisieren von Dateien innerhalb des Archivs. Sie können auch Mehrkern-CPUs für die Komprimierung verwenden.

Der Grund, den jeder noch benutzt, tarist derselbe, warum jeder noch Windows und Flash benutzt : Die Leute mögen keine Veränderungen. Ohne einen starken Grund, sich zu ändern, bleiben die Leute einfach bei dem, was sie wissen. darDer Vorteil ist nicht ausreichend, um das Veröffentlichen von Dateien im Format zu rechtfertigen, wenn die meisten Benutzer bereits tarinstalliert sind und nur sehr wenige davon wissen. Durch die dareinfache Trägheit bleiben wir also auf dem alten Standard.


2
zip kann die Unix-Berechtigungen speichern und wiederherstellen. Dies geschieht mit den Dienstprogrammen zip und unzip von InfoZIP, die normalerweise mit dem Unix-System vertrieben werden.
Mark Adler

3
zip komprimiert die Datei nicht in 32K-Blöcke. Sie verwechseln die Größe des Schiebefensters von 32 KB mit der Komprimierung.
Mark Adler

1
gzip -9 hat kein 900-kB-Wörterbuch. Alle Ebenen von gzip verwenden ein 32K-Wörterbuch. Möglicherweise denken Sie an bzip2.
Mark Adler

So viele Fehlinformationen in einer Antwort.
Mark Adler

1
Sie müssen entweder Korrekturen an Ihrer Antwort vornehmen oder Ihre Antwort löschen.
Mark Adler

7

Tar wurde erstellt, um Backups Ihres Dateisystems in voller Wiedergabetreue zu erstellen und nicht nur, um Dateien zu übertragen. Als solches ist das Dienstprogramm tar das umfassendste Dienstprogramm zum Erstellen eines Archivs, das alle wichtigen Informationen zu Ihrer Dateisystemstruktur beibehält.

Dies schließt all diese Funktionen ein, die in einem oder mehreren konkurrierenden Tools fehlen:

  • Dateieigentum
  • Dateiberechtigungen
  • seltenere Dateiberechtigungen (zB setuid, sticky bit)
  • symbolische Links
  • harte links
  • Geräteeinträge (dh Zeichen- und Blockgeräte)
  • spärliche Dateien
  • ACL-Einträge ( nicht von allen Versionen unterstützt )
  • Erweiterte / Benutzerattribute ( nicht von allen Versionen unterstützt )
  • SElinux-Labels ( nicht von allen Versionen unterstützt )

Es hat auch die --one-file-systemOption, die beim Erstellen von Backups außerordentlich nützlich ist.

Jedes Mal, wenn ein neues Feature zu Dateisystemen hinzugefügt wird, wird die Unterstützung tarzuerst (oder sogar exklusiv) hinzugefügt . Es ist daher weiterhin die am besten kompatible Methode zum Speichern von Dateien.


Diese Antwort ist die einzige, die Sinn macht. Vielen Dank für die Veröffentlichung.
Gaborous

5

Wir haben heute viele komprimierte Dateien im Umlauf, MP3s, JPGs, Videos, tar.gz-Dateien, JAR-Pakete, RPMs, DEBs und so weiter. Wenn Sie einige davon für die Übertragung in einer einzigen Datei bündeln müssen, ist es hilfreich, ein Dienstprogramm "tar" zu haben, das nur die Dateien bündelt, ohne zu versuchen, sie zu komprimieren.

Der Versuch, eine komprimierte Datei zu komprimieren, kostet nicht nur Zeit und Strom, sondern führt häufig zu einer Datei, die größer als das Original ist.

Eine weitere Verwendung ist die Verbesserung der Kompressionsraten. Wenn Sie beispielsweise ein Bündel von Protokolldateien "tar" und anschließend das Ergebnis "gzip", erhalten Sie wahrscheinlich eine kleinere Datei, als wenn Sie sie zuerst komprimiert und dann mit "tar" gebündelt haben. Und natürlich können Sie mit tar einen beliebigen Komprimierungsalgorithmus auswählen und Optionen angeben, um die Komprimierung für Ihren speziellen Anwendungsfall zu optimieren.

Ich finde, dass tar 'heute sehr relevant ist und ich bevorzuge es, ZIP zu verwenden. In unserem Büro hat jeder mit Windows 7-zip installiert, sodass tar-Dateien für uns vollständig plattformübergreifend kompatibel sind.


Sie sehen praktisch nie unkomprimierte tarDateien und es gibt einen Grund dafür. tarVerwendet sehr große Chunks, was bedeutet, dass Sie am Ende der Dateien viel Abstand haben. Um all diese Nullen loszuwerden, lohnt es sich fast immer, sie nur zu verwenden, gzipohne sich Gedanken zu machen.
Christian

Eine amüsante Ausnahme ist, dass der gzip-Quellcode aus offensichtlichen Gründen als nackter Teer verfügbar ist.
Mark Adler

4

Vielleicht sollten wir uns fragen, warum solche "neuen" Dateiformate, die sowohl Komprimierung als auch Aggregation ausführen (und ich würde Verschlüsselung hinzufügen), nicht von Anfang an auf Teer basieren, sondern völlig andere Tools.

Soweit ich weiß, gibt es historische Gründe (im Zusammenhang mit der Geschichte des Betriebssystems, dem "Schutz" von Patenten, der Fähigkeit von Softwareanbietern, Tools zu verkaufen usw.).

Nun, wie andere Reaktionen zeigten, ist tar auch jetzt anderen Lösungen nicht klar unterlegen und kann in Bezug auf andere Aspekte wie die Fähigkeit, an Streams zu arbeiten, oder die Verwaltung von Unix-Rechten besser sein.

Wenn Sie den Wikipedia-Artikel über Teer lesen, sehen Sie eine weitere interessante Tatsache. In dem Artikel werden einige Unzulänglichkeiten von tar anerkannt , es wird jedoch nicht empfohlen, stattdessen zip zu verwenden (das eigentliche zip-Format behebt diese Unzulänglichkeiten nicht), sondern DAR.

Ich werde mit einer persönlichen Note enden. Vor einiger Zeit musste ich ein Dateiformat zum Speichern verschlüsselter Daten erstellen. Es war praktisch, tar als Basis zu verwenden (andere haben die gleiche Wahl getroffen, zum Beispiel ist tar das interne Aggregationsformat für .deb-Pakete). Mir war klar, dass der Versuch, Daten nach der Verschlüsselung zu komprimieren, völlig sinnlos war. Ich musste die Komprimierung als unabhängigen Schritt vor der Verschlüsselung durchführen und war auch nicht bereit, die Zip-Verschlüsselung zu verwenden (ich wollte eine Verschlüsselung mit zwei Schlüsseln mit öffentlichen und privaten Schlüsseln). . Mit Teer war es ein Kinderspiel.


3

Ich bin überrascht, dass niemand dies erwähnt hat, aber einer der Gründe - nicht wirklich ein Vorteil, aber eine Notwendigkeit - ist die Abwärtskompatibilität. Es gibt viele Systeme, auf denen seit Jahrzehnten Software läuft, die möglicherweise eine tarArchivierung erfordern . Es ist nicht kosteneffektiv, jemanden einzustellen, der alle alten Systeme "repariert".


3

tar ist UNIX wie UNIX ist tar

Meiner Meinung nach der Grund der nach wie vor mit tarheute ist , dass es eine der (wahrscheinlich seltenen) Fällen , wo der UNIX Ansatz es gerade gemacht vollkommen richtig von Anfang an .

Wenn Sie sich die Phasen der Archiverstellung genauer ansehen, werden Sie sich hoffentlich einig sein, dass die Art und Weise, wie die Trennung der verschiedenen Aufgaben hier stattfindet, der UNIX-Philosophie am besten entspricht:

  • Ein Tool ( tarum ihm hier einen Namen zu geben), das sich darauf spezialisiert hat, eine Auswahl von Dateien, Verzeichnissen und symbolischen Links, einschließlich aller relevanten Metadaten wie Zeitstempel, Eigentümer und Berechtigungen, in einen Byte-Datenstrom umzuwandeln .

  • und nur ein weiteres beliebig austauschbares Tool ( gzip bz2 xzum nur einige Optionen zu nennen), das jeden Eingabestrom von Bytes in einen anderen (hoffentlich) kleineren Ausgabestrom umwandelt .

Die Verwendung eines solchen Ansatzes bietet sowohl dem Benutzer als auch dem Entwickler eine Reihe von Vorteilen:

  • Erweiterbarkeit Ermöglicht die Kopplung tarmit einem bereits vorhandenen oder einem noch zu entwickelnden Komprimierungsalgorithmus, ohne dass das Innenleben verändert werden muss tar.

    Sobald das brandneue "Hyper-Zip-Utra" oder Whater-Komprimierungs-Tool herauskommt, sind Sie bereit, es zu verwenden und Ihren neuen Diener mit der ganzen Kraft von zu umarmen tar.

  • Stabilität tar wurde seit den frühen 80er Jahren intensiv getestet und auf zahlreichen Betriebssystemen und Maschinen ausgeführt.

    Wenn Sie verhindern, dass Sie das Rad neu erfinden müssen, um das Speichern von Inhabern, Berechtigungen, Zeitstempeln und dergleichen für jedes neue Archivierungswerkzeug immer wieder neu zu implementieren, sparen Sie nicht nur viel (ansonsten unnötig) Entwicklungszeit, sondern garantieren auch die gleiche Zuverlässigkeit für alle neue Bewerbung.

  • Konsistenz Die Benutzeroberfläche bleibt die ganze Zeit gleich.

    Es ist nicht nötig, sich daran zu erinnern, dass Sie zum Wiederherstellen von Berechtigungen mit Werkzeug A die Option übergeben --i-hope-you-rember-this-oneund mit Werkzeug B das --this-time-its-another-one Werkzeug C verwenden müssen, um zu erreichen, dass Sie es nicht mit Werkzeug als Schalter versucht haben.

    Während bei der Verwendung von Tool D Sie es wirklich durcheinander gebracht hätten, wenn Sie nicht verwendet hätten --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now.


3

Viele gute Antworten, aber alle vernachlässigen eine wichtige Tatsache. Tar hat ein gut etabliertes Ökosystem von Anwendern und Entwicklern in der Unix-ähnlichen Welt. Das hält es am Laufen, genauso wie ZIP von seinem DOS / Windows-Ökosystem am Laufen gehalten wird. Ein solches Ökosystem ist das, was eine Technologie erhält, nicht ihre technischen Vorteile.


Wirklich guter Kommentar, daran hatte ich noch nicht einmal gedacht, und das ist ein WIRKLICH guter Punkt.
MarcusJ

3

Der Grund ist "Verankerung in der Kultur". Es gibt zahlreiche Leute wie mich, deren Augen glasig werden, wenn sie aufgefordert werden, etwas anderes als ein komprimiertes Teerarchiv oder das gelegentliche ZIP-Archiv zu verarbeiten, wenn es aus der Windows-Welt stammt.

Ich möchte nichts über 7-Zip, RAR oder etwas anderes hören. Wenn ich ein Programm installieren muss, um Ihre Datei zu dekomprimieren, ist das Arbeit. Ich werde es tun, wenn es dazu führt, dass ich bezahlt werde, oder wenn der Inhalt etwas ist, was ich "haben muss" und auf keine andere Weise verfügbar ist.

Ein Vorteil von tar ist, dass es sofort erkannt wird, wenn Sie jemandem ein Tarball senden. Der Empfänger kann die Extraktionsbefehle unter Verwendung des Muskelgedächtnisses eingeben.

Die eigentliche Frage ist: Warum sind manche Leute so besessen davon, ein weiteres Byte Platz zu sparen, dass sie alle anderen bitten, Zeit damit zu verschwenden, ein exotisches Dienstprogramm zu installieren und zu lernen, wie man es benutzt? Und dann gibt es die dummen Verwendungen exotischer Komprimierungs- und Archivformate. Muss ein H.264- Video mit AAC- Sound wirklich in mehrteilige RAR-Dateien umgewandelt werden?

Das tar-Format ist zwar alt, speichert aber alles, was relevant ist: Dateiinhalte, Pfade, Zeitstempel, Berechtigungen und Eigentumsrechte. Es speichert nicht nur symbolische Verknüpfungen, sondern kann auch die Struktur fester Verknüpfungen beibehalten. Es werden auch spezielle Dateien gespeichert, sodass ein Bandarchiv beispielsweise für ein Miniaturverzeichnis /devverwendet werden kann, das beim Bootstrapping verwendet wird. Sie können eine Linux-Distribution zusammenstellen, deren Binärpaketformat nur aus Tarballs besteht, die im Verhältnis zum Dateisystemstamm nicht komprimiert sind.


Re "So obsessed" ... Stellen Sie sich vor, Sie sind mit einem einzigen, gehärteten Laptop in der Kriegszone gestrandet, und die untergroße 20-G-Festplatte ist fast voll, vielleicht ist noch ein Gig übrig, und wenn Sie das Gewehrfeuer aus der Ferne hören, möchten Sie wirklich gerne stöbern Ein 100-MB-PDF-Handbuch, das zeigt, wie der Jeep repariert wird. Die Datei befindet sich jedoch in einer 2-Gig-TGZ-Datei. Und auf dem Laptop läuft ein seltsames proprietäres Closed-Source-Betriebssystem, und Sie haben keinen Root-Zugriff zum Löschen von Systemdateien, und es ist nicht klar, wie 4G + gelöscht werden kann, ohne den Dearchiver oder den PDF-Viewer zu beschädigen. Wenn Sie nur diese 100MB-Datei extrahieren könnten ...
agc

2

Direkte Beantwortung der von Ihnen gestellten Fragen:

Gibt es während der Aggregations- / Komprimierungs- / Dekomprimierungsphasen Leistungseinbußen für die Verwendung von in gzip oder bzip2 gekapseltem Teer im Vergleich zur Verwendung eines Dateiformats, das Aggregation und Komprimierung in derselben Datenstruktur ausführt? Angenommen, die Laufzeit des zu vergleichenden Kompressors ist identisch (z. B. gzip und Deflate sind ähnlich).

Im Allgemeinen wird eine bestimmte Leistungsverbesserung erzielt, tarinsbesondere bei Verwendung der integrierten Komprimierungsbibliothek (der Befehlszeilen tar xvzfoder tar xvjf, bei denen eine Komprimierungsbibliothek anstelle eines zweiten Prozesses verwendet wird). Dies hat zwei Hauptursachen:

  • Bei der Verarbeitung einer großen Anzahl relativ kleiner Dateien, insbesondere bei der Verteilung von Software, besteht eine hohe Redundanz. Das Komprimieren mehrerer Dateien führt zu einer höheren Gesamtkomprimierung als das Komprimieren einzelner Dateien. Und das "Wörterbuch" wird einmal für jeden Teil der Eingabe berechnet, nicht für jede Datei.

  • tarversteht Dateisysteme. Es wurde entwickelt, um ein funktionierendes / funktionsfähiges Betriebssystem zu speichern und wiederherzustellen. Es erfasst genau das, was auf einem UNIX-Dateisystem wichtig ist, und stellt dies getreu wieder her. Andere Tools ... nicht immer, insbesondere die zip-Familie, die besser für die gemeinsame Nutzung von Dateien unter Betriebssystemen geeignet ist, bei denen es auf das Dokument ankommt und nicht auf die Vertraulichkeit des Betriebssystems ankommt.

Gibt es Funktionen des Dateiformats tar, die andere Dateiformate wie .7z und .zip nicht haben?

Sparsame Dateiverwaltung. Einige der direkten Datenbankbibliotheken basieren auf spärlichen Dateien - Dateien, bei denen die Daten nominal GB sind, die tatsächlich geschriebenen und gespeicherten Daten jedoch viel, viel weniger sind und nur wenige Plattenblöcke tatsächlich verwendet werden. Wenn Sie ein unbekanntes Tool verwenden, wird beim Dekomprimieren massiv Festplattenblock verbraucht, der alle Nullen enthält. Das wieder in eine dünne Datei umzuwandeln ist ... schmerzhaft. Wenn Sie sogar den Raum haben, um es zu tun. Sie benötigen ein Tool, das erfasst, was eine dünne Datei ist, und das berücksichtigt.

Metadaten. Unix hat im Laufe der Jahre einige seltsame Dinge entwickelt. Dateinamen mit 14 Zeichen, lange Dateinamen, Links, Sym-Links, Sticky-Bits, Superuser-Bits, vererbte Gruppenzugriffsberechtigungen usw. Tar versteht und reproduziert diese. Filesharing-Tools ... nicht so sehr. Viele Leute verwenden Links nicht so, wie sie es könnten ... Wenn Sie jemals mit Software gearbeitet haben, die Links verwendet, und dann ein nicht bewusstes Tool zum Sichern und Wiederherstellen verwendet haben, haben Sie jetzt viele unabhängige Dateien anstelle einer einzelnen Datei mit vielen Namen. Schmerzen. Ihre Software schlägt fehl und die Festplatte ist aufgebläht.

Da tar ein so altes Dateiformat ist und es heutzutage neuere Dateiformate gibt, warum wird tar (ob in gzip, bzip2 oder sogar dem neuen xz gekapselt) unter GNU / Linux, Android, BSD und anderen UNIX-Betriebssystemen immer noch so häufig verwendet Betriebssysteme, für Dateiübertragungen, Programmquellen- und Binärdownloads und manchmal sogar als Paketmanager-Format?

tarfunktioniert. Es macht den Job, für den es entworfen ist, gut. Es wird angepriesen Ersatz gewesen andere ( cpio, paxetc, etc). Aber tar ist auf so ziemlich allem installiert, und die Komprimierungsbibliotheken, die es verwendet, sind auch aus anderen Gründen sehr verbreitet. Es ist nichts anderes hinzugekommen, das wesentlich besser ist als das, was Teer tut. Ohne klare Vorteile und viele eingebettete Anwendungen und Kenntnisse in der Community wird es keinen Ersatz geben. Teer wurde im Laufe der Jahre viel benutzt. Wenn wir größere Änderungen in der Art und Weise bekommen, wie wir an Dateisysteme denken, oder wenn Nicht-Text-Dateien die Art und Weise werden, Code zu übertragen (kann mir derzeit nicht vorstellen, wie, aber ignoriere das ...), dann könnten Sie ein anderes Tool finden. Aber das wäre dann nicht die Art von Betriebssystem, die wir jetzt verwenden. Es wäre eine andere Sache, anders organisiert und es würde seine eigenen Werkzeuge brauchen.

Ich denke, die wichtigste Frage, die Sie nicht gestellt haben, ist, wofür Jobs "Teer" nicht geeignet sind.

tarmit Kompression ist zerbrechlich. Sie brauchen das gesamte Archiv, Stück für Stück. Nach meiner Erfahrung ist es nicht belastbar. Ich habe Einzelbitfehler gehabt, die dazu geführt haben, dass mehrteilige Archive unbrauchbar wurden. Es wird keine Redundanz zum Schutz vor Fehlern eingeführt (wodurch eine der von Ihnen gestellten Fragen zur Datenkomprimierung beantwortet wird). Wenn die Möglichkeit einer Datenbeschädigung besteht, möchten Sie eine Fehlerprüfung mit Redundanz durchführen, damit Sie die Daten rekonstruieren können. Das bedeutet per definitionem, dass Sie nicht maximal komprimiert sind. Sie können nicht beide Daten benötigen und ihren maximalen Bedeutungswert (maximale Komprimierung) haben und jedes Datenbit kann verloren gehen und wiederhergestellt werden (Redundanz und Fehlerkorrektur). Also ... was ist der Zweck Ihres Archivs?tareignet sich hervorragend für Umgebungen mit hoher Zuverlässigkeit und wenn das Archiv wieder von der Quelle reproduziert werden kann. IME, es ist tatsächlich schlimmer, als die ursprünglichen Namen vermuten lassen - die Bandarchivierung. Einzelbitfehler auf einem Band (oder schlimmer noch Einzelbitfehler in einem Bandkopf, bei denen Sie ein Bit pro Byte eines ganzen Bandes oder Archivs verlieren) führen dazu, dass die Daten unbrauchbar werden. Mit einer ausreichenden Redundanz und Fehlererkennung und -korrektur können Sie eines dieser Probleme bewältigen.

Also ... wie viel Lärm und Korruption gibt es in der Umgebung, die Sie betrachten, und kann die Quelle verwendet werden, um ein fehlgeschlagenes Archiv neu zu generieren? Aus den von Ihnen angegebenen Hinweisen geht hervor, dass das System nicht verrauscht ist und dass diese Quelle in der Lage ist, ein Archiv neu zu generieren. In welchem ​​Fall tarist ausreichend.

tarmit Komprimierung funktioniert auch nicht mit vorkomprimierten Dateien. Wenn Sie bereits komprimierte Daten verschicken ... verwenden Sie einfach tar und kümmern Sie sich nicht um die Komprimierungsstufe - es werden lediglich CPU-Zyklen hinzugefügt, um nicht viel zu tun. Das bedeutet, dass Sie wissen müssen, was Sie senden und warum. Falls es dich interessiert. Wenn Sie sich nicht für diese Sonderfälle interessieren, kopiert tar die Daten originalgetreu und komprimiert sie nicht , um sie zu verkleinern. Kein großes Problem, abgesehen von einigen CPU-Zyklen.


-3

TAR ist Tape Archive. Es gibt es schon seit Jahrzehnten und es ist weit verbreitet und unterstützt. Es ist ein ausgereiftes Produkt und berücksichtigt sowohl die aktuellen als auch die alten Bedürfnisse.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.