Tengo un tar.gz
archivo de 32 GB. Intenté extraer carpetas específicas de él, así que enumeré el contenido con el siguiente comando para ver la estructura de los archivos:
tar -tvf file.tar.gz > files.txt
Parece que lleva una eternidad enumerar todos los archivos. Mi pregunta es ¿el indicador -t extrae también los archivos? Sé que no se extrae en el disco, pero la cantidad de tiempo que lleva me hace preguntarme si realmente los procesa en algún tipo de búfer.
command-line
tar
Saif
fuente
fuente
-z
opción:tar -tvfz
. Similar: ¿Qué sucede si usa el comando tar tvf en lugar de tar tvfz?Respuestas:
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 amboszip -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 .Zip es más lento aquí.
Prueba 2
Directorio que
files2
contiene 5,000 archivos con 512 bytes de datos aleatorios cada uno.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.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.
fuente