Los archivos tar.gz no tienen un índice. A diferencia de zip u otros formatos de archivo, no es trivial ni económico obtener una lista de los archivos contenidos u otros metadatos. Para mostrarle qué archivos están contenidos en el archivo, tar necesita descomprimir el archivo y extraer los archivos, aunque en el caso de la -t
opción solo lo hace en la memoria.
Si un patrón común en su caso de uso es enumerar los archivos contenidos en un archivo, puede considerar usar un formato de archivo que pueda agregar un índice de archivo al archivo comprimido, por ejemplo, zip.
Quizás también desee echar un vistazo al formato HDF5 para escenarios más complejos.
Mediciones
Simplemente tuve que hacer algunas mediciones para probar mi respuesta y creé algunos directorios con muchos archivos y los empaqué, tar czf files#.tgz files#
y ambos zip -r files#.zip files#
.
Para las pruebas, ejecuté el comando de desempaque dos veces cada vez y tomé el resultado de la segunda ejecución, para tratar de evitar medir la velocidad del disco.
Prueba 1
Directorio que files1
contiene 100,000 archivos vacíos .
$ 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 es más lento aquí.
Prueba 2
Directorio que files2
contiene 5,000 archivos con 512 bytes de datos aleatorios cada uno.
$ 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
Todavía no es convincente, pero esta vez es más rápido.
Prueba 3
Directorio que files3
contiene 5,000 archivos con 5kB de datos aleatorios cada uno.
$ 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
En esta prueba se puede ver que cuanto más grandes son los archivos, más difícil es para tar enumerarlos.
Conclusión
Para mí, parece que zip introduce una pequeña sobrecarga que notarás solo con muchos archivos muy pequeños (casi vacíos), mientras que para un gran número de archivos más grandes gana el concurso al enumerar los archivos contenidos en el archivo.
-z
opción:tar -tvfz
. Similar: ¿Qué sucede si usa el comando tar tvf en lugar de tar tvfz?