Desafortunadamente, para descomprimir un solo miembro de .tar.gz
tiene que procesar todo el archivo y no puede hacer mucho para arreglarlo.
Aquí es donde .zip
(y algunos otros formatos como .rar
) los archivos funcionan mucho mejor, porque zip
El formato tiene un directorio central de todos los archivos contenidos en él con desplazamientos directos que apuntan a la mitad del zip
archivo, por lo que los miembros del archivo se pueden extraer rápidamente sin procesar todo.
Puede preguntar por qué procesar .tar.gz
es tan lento?
.tar.gz
(a menudo abreviado como .tgz
) es simplemente .tar
archivo comprimido con gzip
compresor. gzip
es un compresor de transmisión que solo puede funcionar con un archivo. Si desea obtener cualquier parte de gzip
flujo, tienes que descomprimirlo como un todo, y esto es lo que realmente lo mata para .tar.gz
(y para .tar.bz2
, .tar.xz
y otros formatos similares basados en .tar
).
.tar
El formato es en realidad muy, muy simple. Es simplemente un flujo de encabezados de archivos o directorios de 512 bytes (nombre, tamaño, etc.), cada uno seguido por el contenido del archivo o directorio (rellenado a 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 de .tar
archivo.
Algunas personas piensan que incluso .tar
No se puede acceder rápidamente a los miembros del archivo, pero esto no es bastante verdadero. Si .tar
El archivo contiene pocos archivos grandes, en realidad puede buscar rápidamente en el siguiente encabezado y, por lo tanto, puede encontrar el miembro del archivo necesario en pocas búsquedas (pero aún podría requerir tantas búsquedas como miembros del archivo). Si su .tar
El archivo contiene muchos archivos diminutos, lo que significa que la recuperación rápida de miembros se vuelve imposible incluso para .tar
sin comprimir .
Si está extrayendo solo un archivo de un archivo tar grande, está usando GNU tar
, y puede garantizar que el archivo tar nunca se ha agregado a entonces puede obtener un aumento significativo del rendimiento utilizando --occurrence
.
Esta opción le dice a tar que se detenga tan pronto como encuentre la primera aparición de cada archivo que haya solicitado, por ejemplo,
tar xf large-backup.tar --occurrence etc/passwd etc/shadow
no se pondrá en cola todo el tarball después de encontrar una copia de cada uno de passwd
y shadow
, en su lugar, se detendrá. Si esos archivos aparecen cerca del final, la ganancia de rendimiento no será mucho, pero si aparecen incluso a la mitad de un archivo de 500G, ahorrará mucho tiempo.
Para personas que usan tar
para copias de seguridad de una sola toma y que no utilizan unidades de cinta reales, esta situación es probablemente el caso típico.
Tenga en cuenta que también puede pasar --occurrence=NUMBER
para recuperar la NÚMERO de ocurrencias de cada archivo, lo que ayuda si sabe que hay hay múltiples versiones en el archivo. Por defecto el comportamiento es igual a un NUMBER
de 1.
Cuando se trate de un tarball grande, use:
--fast-read
para extraer solo la primera entrada de archivo que coincida con el operando del nombre de archivo, path/to/file
en este caso, que siempre es único en tarball de todos modos
tar -xvf file.tgz --fast-read path/to/file
lo anterior buscará hasta que encuentre una coincidencia y luego saldrá