Ich weiß, dass dies tar
frü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
tar
Encapsulated Ingzip
oderbzip2
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).Gibt es Funktionen des
tar
Dateiformats, die andere Dateiformate wie.7z
und.zip
nicht haben?Da
tar
so ein altes Dateiformat ist, und neuere Dateiformate gibt es heute, warum isttar
(ob in verkapseltergzip
,bzip2
oder auch die neuenxz
) 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?
tar xvzf
ist schwieriger als7z -x
...tar xvzf
, werden die unkomprimierten Daten nicht im.tar
Format auf die Festplatte geschrieben ! Sie haben Recht, wenn Sie ausgeführtgunzip blah.tar.gz
und danntar 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. Dertar xzf
verwendet eine UNIX-Pipe (im Grunde genommen eine Speicherkopie), um die unkomprimierten Daten vongzip
(oder einem beliebigen Kompressor) zu übertragentar
, sodass die Daten nicht im.tar
Format auf die Festplatte geschrieben werden .tar
(besonders komprimiert) schrecklich verhält, wenn es um Datenkorruption geht. Kleine Redundanz- / Wiederherstellungsdaten, die durch moderne Formate hinzugefügt wurden, sind Gold wertAntworten:
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:
Dies würde dazu führen,
blah.tar
dass es sich lediglich um eine Aggregation derfiles ...
in unkomprimierter Form handelt.Dann würdest du tun
Dies würde den Inhalt von
blah.tar
der Festplatte lesen , ihn durch den gzip-Komprimierungsalgorithmus komprimieren, den Inhalt inblah.tar.gz
die Datei schreiben und dann die Verknüpfung aufheben (die Datei löschen)blah.tar
.Nun lasst uns dekomprimieren!
Weg 1
Sie haben
blah.tar.gz
so oder so.Sie entscheiden sich zu laufen:
Dieser Wille
blah.tar.gz
.gzip
Dekomprimierer im Speicher.blah.tar
auf der Festplatte und wiederholen Sie den Vorgang , bis alle komprimierten Daten gelesen sind.blah.tar.gz
.Jetzt haben Sie eine
blah.tar
Festplatte, 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:
Dieser Wille
blah.tar
und die Datenstrukturen destar
Dateiformats, einschließlich Informationen zu Dateiberechtigungen, Dateinamen, Verzeichnissen usw.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.gz
so oder so.Sie entscheiden sich zu laufen:
Dieser Wille
blah.tar.gz
eines Blocks nach dem anderen in den Speicher.gzip
Dekomprimierer im Speicher.tar
Dateiformat - Parser, der die Informationen über die Metadaten gelesen werden usw. , und die unkomprimierten Dateidaten.tar
Datei-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
Zip
oder 7-Zip - Programme für alle Unterschiede in Verdichtungsverhältnis einzustellen.Und wenn das Komprimierungsverhältnis Ihr Anliegen ist, verwenden Sie den
Xz
Kompressor, um zu kapselntar
, 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.
quelle
tar
in 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.dar
nicht verwendet werden. Mit anderen Worten, diese Antwort rechtfertigt die Verwendung von Dateiaggregatoren, nicht jedoch dertar
Software an sich.Dies wurde beim Stack Overflow beantwortet .
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
tar
und habengunzip
, 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.
quelle
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.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.
quelle
f -
und leiten Sie es an den Kompressor weiter.tar
sehr 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. Egtar cf - * | tar xf - -C /somewhere
.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
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
tar
ist, 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
tar
mitgzip
ist: 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 ichgzip
, 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:gzip
Kann als überall verfügbar angesehen werden.Gründe für den Einsatz
tar
zugunsten vonscp
,rsync
usw.Es schlägt sich,
scp
wenn 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ßerdemrsync
lohnt es sich nur, wenn ein Teil der Dateien - oder eine ältere Version - bereits auf dem Ziel vorhanden ist. Denn die Erstkopietar
ist die schnellste, mit oder ohne Komprimierung, abhängig von den tatsächlichen Daten.quelle
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).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 sie einfach weiterleiten können.Ich muss eine im Internet verfügbare Datei dekomprimieren. Entweder mit
zip
oderrar
Formate muss ich es zuerst herunterladen und dann dekomprimieren. Mittar.{gz,bz2,xz}
kann ich im selben Schritt herunterladen und dekomprimieren, ohne das komprimierte Archiv physisch auf der Festplatte haben zu müssen: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
zip
oderrar
Dateien tun .quelle
funzip
extrahiert nur die erste Datei in der Zip-Datei, nicht alle.tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Es gibt mehrere Gründe, bei (GNU) Tar zu bleiben.
Es ist:
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.
quelle
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.
quelle
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.
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.
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.
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.
quelle
Performance
Der große Unterschied besteht in der Reihenfolge, in der die Komprimierung und Archivierung durchgeführt wird.
tar
Archive können dann optional an einen Komprimiererzip
gesendet 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
zip
Methode 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 derdar
Fall ist, undzip
kann, 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,
tar
ist 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.dar
Der Vorteil ist nicht ausreichend, um das Veröffentlichen von Dateien im Format zu rechtfertigen, wenn die meisten Benutzer bereitstar
installiert sind und nur sehr wenige davon wissen. Durch diedar
einfache Trägheit bleiben wir also auf dem alten Standard.quelle
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:
Es hat auch die
--one-file-system
Option, 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
tar
zuerst (oder sogar exklusiv) hinzugefügt . Es ist daher weiterhin die am besten kompatible Methode zum Speichern von Dateien.quelle
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.
quelle
tar
Dateien und es gibt einen Grund dafür.tar
Verwendet 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,gzip
ohne sich Gedanken zu machen.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.
quelle
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
tar
Archivierung erfordern . Es ist nicht kosteneffektiv, jemanden einzustellen, der alle alten Systeme "repariert".quelle
tar ist UNIX wie UNIX ist tar
Meiner Meinung nach der Grund der nach wie vor mit
tar
heute 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 (
tar
um 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
xz
um 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
tar
mit einem bereits vorhandenen oder einem noch zu entwickelnden Komprimierungsalgorithmus, ohne dass das Innenleben verändert werden musstar
.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-one
und 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
.quelle
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.
quelle
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
/dev
verwendet 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.quelle
Direkte Beantwortung der von Ihnen gestellten Fragen:
Im Allgemeinen wird eine bestimmte Leistungsverbesserung erzielt,
tar
insbesondere bei Verwendung der integrierten Komprimierungsbibliothek (der Befehlszeilentar xvzf
odertar 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.
tar
versteht 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.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.
tar
funktioniert. Es macht den Job, für den es entworfen ist, gut. Es wird angepriesen Ersatz gewesen andere (cpio
,pax
etc, 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.
tar
mit 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?tar
eignet 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
tar
ist ausreichend.tar
mit 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.quelle
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.
quelle