Desafortunadamente, para descomprimir un solo miembro del .tar.gzarchivo, debe procesar todo el archivo, y no puede hacer mucho para solucionarlo.
Aquí es donde .zip(y algunos otros formatos como .rar) los archivos funcionan mucho mejor, porque el zipformato tiene un directorio central de todos los archivos contenidos con desplazamientos directos que apuntan a la mitad del ziparchivo, por lo que los miembros del archivo se pueden extraer rápidamente sin procesar todo.
¿Podría preguntar por qué el procesamiento .tar.gzes tan lento?
.tar.gz(a menudo acortado como .tgz) es simplemente .tararchivo comprimido con gzipcompresor. gzipes un compresor de transmisión que solo puede funcionar con un archivo. Si desea obtener cualquier parte de la gziptransmisión, debe descomprimirla como un todo, y esto es lo que realmente lo mata .tar.gz(y para .tar.bz2, .tar.xzy otros formatos similares basados en .tar).
.tarEl formato es realmente muy, muy simple. Es simplemente una secuencia de archivos de 512 bytes o encabezados de directorio (nombre, tamaño, etc.), cada uno seguido del contenido del archivo o directorio (rellenado con un tamaño de bloque de 512 con 0 bytes si es necesario). Cuando observa un bloque 512 totalmente nulo para un encabezado, esto significa el final del .tararchivo.
Algunas personas piensan que incluso a los .tarmiembros del archivo no se puede acceder rápidamente, pero esto no es del todo cierto. Si el .tararchivo contiene pocos archivos grandes, puede buscar rápidamente el siguiente encabezado y, por lo tanto, puede encontrar el miembro de archivo necesario en pocas búsquedas (pero aún podría requerir tantas búsquedas como miembros de archivo). Si su .tararchivo contiene muchos archivos pequeños, esto significa que la recuperación rápida de miembros se vuelve efectivamente imposible incluso para los no comprimidos .tar.