track schrieb:
Das Problem bei einem so großen Archiv ist, dass er das gesamte Archiv lesen muss, damit er an die ganzen Dateinamen herankommt.
Das ist so nicht richtig. Wenn man
tar tf <file> | egrep -m 1 "/$"
ausführt, fängt tar an, die Pfade und Dateien auszugeben. Sobald aber ein Verzeichnis gefunden wurde, beendet sich grep und damit auch tar, ohne das gesamte Archiv einlesen zu müssen:
$ time tar tf backup_zion_2014-11-11.tgz > /dev/null
real 1m28.326s
user 1m12.488s
sys 0m7.668s
$ time tar tf backup_zion_2014-11-11.tgz | grep -m 1 "/$"
etc/
real 0m0.063s
user 0m0.000s
sys 0m0.000s