Ich habe eine tar.gz
Datei von 32 GB. Ich habe versucht, bestimmte Ordner daraus zu extrahieren, daher habe ich den Inhalt mit dem folgenden Befehl aufgelistet, um die Dateistruktur anzuzeigen:
tar -tvf file.tar.gz > files.txt
Es scheint ewig zu dauern, alle Dateien aufzulisten. Meine Frage ist, ob das Flag -t auch die Dateien extrahiert. Ich weiß, dass es nicht auf der Festplatte extrahiert wird, aber die Zeit, die es benötigt, lässt mich fragen, ob es sie tatsächlich in einer Art Puffer verarbeitet.
command-line
tar
Saif
quelle
quelle
-z
Option vergessen :tar -tvfz
. Ähnlich: Was passiert, wenn Sie den Befehl tar tvf im Gegensatz zu tar tvfz verwenden?Antworten:
tar.gz-Dateien haben keinen Index. Im Gegensatz zu Zip- oder anderen Archivformaten ist es weder trivial noch billig, eine Liste der enthaltenen Dateien oder anderer Metadaten zu erhalten. Um Ihnen zu zeigen, welche Dateien im Archiv enthalten sind, muss tar das Archiv tatsächlich dekomprimieren und die Dateien extrahieren, obwohl dies bei der
-t
Option nur im Speicher der Fall ist .Wenn in Ihrem Anwendungsfall häufig die enthaltenen Dateien in einem Archiv aufgelistet werden, sollten Sie ein Archivformat verwenden, mit dem der komprimierten Datei ein Dateiindex hinzugefügt werden kann, z. B. zip.
Vielleicht möchten Sie auch das HDF5- Format für komplexere Szenarien betrachten.
Messungen
Ich musste nur einige Messungen durchführen, um meine Antwort zu beweisen, und einige Verzeichnisse mit vielen Dateien darin erstellen und sie beide packen,
tar czf files#.tgz files#
undzip -r files#.zip files#
.Für die Tests habe ich den Entpackungsbefehl jedes Mal zweimal ausgeführt und das Ergebnis des zweiten Durchlaufs verwendet, um zu vermeiden, dass die Geschwindigkeit der Festplatte gemessen wird.
Test 1
Verzeichnis
files1
mit 100.000 leeren Dateien .zip ist hier langsamer.
Test 2
Verzeichnis
files2
mit 5.000 Dateien mit jeweils 512 Byte Zufallsdaten.Immer noch nicht überzeugend, aber der Reißverschluss ist diesmal schneller.
Test 3
Verzeichnis
files3
mit 5.000 Dateien mit jeweils 5 KB zufälligen Daten.In diesem Test ist zu erkennen, dass es für tar umso schwieriger ist, sie aufzulisten, je größer die Dateien werden.
Fazit
Für mich sieht es so aus, als würde zip einen kleinen Overhead verursachen, den Sie nur bei vielen sehr kleinen (fast leeren) Dateien bemerken werden, während es bei einer großen Anzahl größerer Dateien den Wettbewerb gewinnt, wenn es die im Archiv enthaltenen Dateien auflistet.
quelle