GNU/Linux >> Tutoriales Linux >  >> Linux

extraer un solo archivo de un archivo tgz enorme

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á


Linux
  1. ¿Cómo convertir un archivo Tar en un archivo Tgz?

  2. ¿Cómo extraer un solo atributo de un archivo Xml?

  3. Cómo extraer o descomprimir el archivo tar.xz en Linux

  4. Abrir un archivo .tar.gz con un solo comando

  5. ¿Formato de archivo indexado?

Cómo extraer o descomprimir archivos tar.gz desde la línea de comandos de Linux

Cómo extraer archivos del archivo de paquetes de Debian DEB

Cómo extraer (descomprimir) el archivo Tar Gz

Cómo extraer (descomprimir) el archivo Tar Bz2

Cómo extraer (descomprimir) el archivo tar.xz

Extraiga el archivo tar.gz en Linux