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#
und zip -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 .
$ time tar tzf files1.tgz >/dev/null
tar tzf files1.tgz > /dev/null 0,56s user 0,09s system 184% cpu 0,351 total
$ time unzip -l files1.zip >/dev/null
unzip -l files1.zip > /dev/null 0,30s user 0,34s system 99% cpu 0,649 total
zip ist hier langsamer.
Test 2
Verzeichnis files2
mit 5.000 Dateien mit jeweils 512 Byte Zufallsdaten.
$ time tar tzf files2.tgz >/dev/null
tar tzf files2.tgz > /dev/null 0,14s user 0,03s system 129% cpu 0,131 total
$ time unzip -l files2.zip >/dev/null
unzip -l files2.zip > /dev/null 0,03s user 0,06s system 98% cpu 0,092 total
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.
$ time tar tzf files3.tgz >/dev/null
tar tzf files3.tgz > /dev/null 0,42s user 0,03s system 111% cpu 0,402 total
$ time unzip -l files3.zip >/dev/null
unzip -l files3.zip > /dev/null 0,03s user 0,06s system 99% cpu 0,093 total
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.
-z
Option vergessen :tar -tvfz
. Ähnlich: Was passiert, wenn Sie den Befehl tar tvf im Gegensatz zu tar tvfz verwenden?