Ein Problem bei .tar.gz
Archiven besteht darin, dass der Computer den Inhalt eines Archivs dekomprimiert, wenn ich nur versuche, ihn aufzulisten. Dies würde sehr lange dauern, wenn die Datei groß ist.
Andere Dateiformate wie .7z
, .rar
, .zip
dieses Problem nicht haben. Das Auflisten ihrer Inhalte dauert nur einen Augenblick.
Meiner naiven Meinung nach ist dies ein großer Nachteil des .tar.gz
Archivformats.
Ich habe also tatsächlich 2 Fragen:
- Warum verbrauchen die Leute
.tar.gz
trotz dieses Nachteils so viel? - Welche Auswahlmöglichkeiten (ich meine andere Software oder Tools) habe ich, wenn ich die Funktion "Sofortige Auflistung von Inhalten" möchte?
tar
compression
gzip
archive
David Dai
quelle
quelle
Antworten:
Es ist wichtig zu verstehen, dass es hier einen Kompromiss gibt.
tar
bedeutet Bandarchivierer . Auf einem Band lesen und schreiben Sie meistens nacheinander. Bänder werden heutzutage selten verwendet, werden abertar
immer noch verwendet, um ihre Daten als Stream zu lesen und zu schreiben.Du kannst tun:
Das kann man nicht mit
zip
oder ähnlichem machen.Sie können den Inhalt eines
zip
Archivs nicht einmal auflisten, ohne ihn zuerst lokal in einer durchsuchbaren Datei zu speichern. Denkt wie:wird nicht funktionieren.
Um dieses schnelle Lesen des Inhalts
zip
oder dergleichen zu erreichen, muss ein Index erstellt werden. Dieser Index kann am Anfang der Datei gespeichert werden (in diesem Fall kann er nur in reguläre Dateien geschrieben werden, nicht in Streams) oder am Ende. Dies bedeutet, dass der Archivierer sich alle Archivmitglieder merken muss, bevor er am Ende gedruckt wird und bedeutet, dass ein abgeschnittenes Archiv möglicherweise nicht wiederhergestellt werden kann.Das bedeutet auch, dass Archivmitglieder einzeln komprimiert werden müssen, was ein viel geringeres Komprimierungsverhältnis bedeutet, insbesondere wenn viele kleine Dateien vorhanden sind.
Ein weiterer Nachteil bei Formaten wie
zip
ist, dass die Archivierung mit der Komprimierung verknüpft ist. Sie können den Komprimierungsalgorithmus nicht auswählen. Sehen Sie, wietar
Archive früher mitcompress
(tar.Z
) komprimiert wurden , dann mitgzip
, dannbzip2
,xz
als neue, leistungsfähigere Komprimierungsalgorithmen entwickelt wurden. Gleiches gilt für die Verschlüsselung. Wer würdezip
heutzutage der Verschlüsselung vertrauen ?Das Problem mit
tar.gz
Archiven besteht nicht darin, dass Sie sie dekomprimieren müssen. Das Dekomprimieren ist oft schneller als das Ablesen einer Festplatte (Sie werden wahrscheinlich feststellen, dass das Auflisten des Inhalts eines großen TGZ-Archivs schneller ist als das Auflisten desselben unkomprimierten Archivs, wenn es nicht im Speicher zwischengespeichert ist), aber Sie müssen das gesamte Archiv lesen.Es ist kein Problem, den Index nicht schnell lesen zu können. Wenn Sie den Tabelleninhalt eines Archivs häufig lesen müssen, können Sie diese Liste einfach in einer separaten Datei speichern. Zum Zeitpunkt der Erstellung können Sie beispielsweise Folgendes tun:
Ein größeres Problem IMO ist die Tatsache, dass Sie aufgrund des sequentiellen Aspekts des Archivs keine einzelnen Dateien extrahieren können, ohne den gesamten Anfangsabschnitt des Archivs zu lesen, der dazu führt. IOW, Sie können keine zufälligen Lesevorgänge im Archiv durchführen.
Für durchsuchbare Dateien muss dies nicht mehr so sein.
Wenn Sie Ihr
tar
Archiv mitgzip
komprimieren, wodurch es als Ganzes komprimiert wird, verwendet der Komprimierungsalgorithmus die zu Beginn angezeigten Daten zum Komprimieren. Sie müssen also von vorne beginnen, um die Komprimierung aufzuheben.Das
xz
Format kann jedoch so konfiguriert werden, dass Daten in separaten einzelnen Blöcken komprimiert werden (groß genug, um die Komprimierung effizient zu gestalten). Dies bedeutet, dass Sie für durchsuchbare Dateien auf den zugreifen können, solange Sie einen Index am Ende dieser komprimierten Blöcke behalten unkomprimierte Daten zufällig (mindestens in Blöcken).pixz
(parallelxz
) verwendet diese Funktion beim Komprimieren vontar
Archiven, um auch einen Index des Starts jedes Mitglieds des Archivs am Ende derxz
Datei hinzuzufügen .Bei durchsuchbaren Dateien können Sie also nicht nur sofort (ohne Metadaten) eine Liste des Inhalts des TAR-Archivs abrufen, wenn diese komprimiert wurden mit
pixz
:Sie können aber auch einzelne Elemente extrahieren, ohne das gesamte Archiv lesen zu müssen:
Nun, warum Dinge wie
7z
oderzip
selten unter Unix verwendet werden, liegt hauptsächlich daran, dass sie Unix-Dateien nicht archivieren können. Sie wurden für andere Betriebssysteme entwickelt. Mit diesen können Sie keine zuverlässige Datensicherung durchführen. Sie können keine Metadaten wie Eigentümer (ID und Name), Berechtigung, Symlinks, Geräte, Fifos ..., keine Informationen zu festen Links und andere Metadaten wie erweiterte Attribute oder ACLs speichern.Einige von ihnen können nicht einmal Mitglieder mit beliebigen Namen speichern (andere ersticken an Backslash oder Newline oder Doppelpunkt oder Nicht-ASCII-Dateinamen) (einige
tar
Formate haben jedoch auch Einschränkungen).Dekomprimieren Sie niemals eine tgz / tar.xz-Datei auf die Festplatte!
Falls es nicht offensichtlich ist, verwendet man kein
tgz
odertar.bz2
,tar.xz
... Archiv als:Wenn Sie eine unkomprimierte
.tar
Datei in Ihrem Dateisystem haben, haben Sie etwas falsch gemacht.Der springende Punkt bei diesen
xz
/bzip2
/gzip
Stream-Kompressoren ist, dass sie im laufenden Betrieb in Pipelines wie in verwendet werden könnenObwohl moderne
tar
Implementierungen wissen , wie aufrufenunxz
/gunzip
/bzip2
von selbst, so:würde im Allgemeinen auch funktionieren (und die Daten erneut im laufenden Betrieb dekomprimieren und die unkomprimierte Version des Archivs nicht auf der Festplatte speichern).
Beispiel
Hier ist ein Linux-Kernel-Quellbaum, der mit verschiedenen Formaten komprimiert ist.
Erstens, wie oben erwähnt, unterscheiden sich die 7z- und Zip-Links geringfügig, da sie die wenigen Symlinks dort nicht speichern können und die meisten Metadaten fehlen.
Nun einige Zeitpunkte, um den Inhalt aufzulisten, nachdem die Systemcaches geleert wurden:
Sie werden feststellen, dass die Auflistung der
tar.xz
Datei.tar
selbst auf diesem 7 Jahre alten PC schneller ist als die, da das Lesen dieser zusätzlichen Megabyte von der Festplatte länger dauert als das Lesen und Dekomprimieren der kleineren Datei.OK, das Auflisten der Archive mit 7z oder zip ist schneller, aber das ist kein Problem, wie gesagt, es kann leicht umgangen werden, indem die Dateiliste neben dem Archiv gespeichert wird:
Noch schneller als 7z oder Reißverschluss, selbst nachdem Caches gelöscht wurden. Sie werden auch feststellen, dass die kumulative Größe des Archivs und seines Index immer noch kleiner ist als die der Zip- oder 7z-Archive.
Oder verwenden Sie das
pixz
indizierte Format:Um nun einzelne Elemente des Archivs zu extrahieren, ist das Worst-Case-Szenario für ein Teerarchiv der Zugriff auf das letzte Element:
Das ist ziemlich schlecht, da es das gesamte Archiv lesen (und dekomprimieren) muss. Vergleichen mit:
Meine Version von 7z scheint keinen zufälligen Zugriff zu ermöglichen, daher scheint es noch schlimmer zu sein als
tar.xz
:Jetzt, da wir unsere
pixz
von früher generierte haben:Es ist schneller, aber immer noch relativ langsam, da das Archiv nur wenige große Blöcke enthält:
Es muss also
pixz
noch ein (bis zu) ~ 19 MB großer Datenblock gelesen und dekomprimiert werden.Wir können den Direktzugriff beschleunigen, indem wir Archive kleiner machen (und ein wenig Speicherplatz opfern):
quelle
.tar.gz
zu viel Zeit in Anspruch nehmen. Besonders wenn das Medium langsam ist. Dann wird das Format eines Archivs zum Unterschied zwischen dem Unmöglichen und dem Praktischen.Unternehmens- und akademische Administratoren werden oft mehr wahrgenommen, wenn Dinge kaputt gehen, als geschätzt, wenn Dinge effizient laufen. Solche Umgebungen erzeugen Angst vor Experimenten und verachten nach Neuheiten .
dar ( D isk Ar chiver) bietet eine Reihe von teerähnlichen Funktionen sowie Verbesserungen wie schnellen Direktzugriff für komprimierte Archive, AKA-Katalogisierung, AKA-Indizierung, AKA "Instant Content Listing" ...
Siehe auch: Komprimierungsformate mit guter Unterstützung für den wahlfreien Zugriff in Archiven?
quelle