Con los archivos gzip, simplemente puede concatenar los archivos juntos, así:
cat file1.gz file2.gz file3.gz > allfiles.gz
Según el RFC de gzip ,
Un archivo gzip consta de una serie de "miembros" (conjuntos de datos comprimidos). [...] Los miembros simplemente aparecen uno tras otro en el archivo, sin información adicional antes, entre o después de ellos.
Tenga en cuenta que esto no es exactamente lo mismo que crear un solo archivo gzip de los datos concatenados; entre otras cosas, se conservan todos los nombres de archivo originales. Sin embargo, gunzip parece manejarlo como equivalente a una concatenación.
Dado que las herramientas existentes generalmente ignoran los encabezados de los nombres de archivo de los miembros adicionales, no es fácil extraer archivos individuales del resultado. Si desea que esto sea posible, cree un archivo ZIP en su lugar. ZIP y GZIP utilizan el algoritmo DEFLATE para la compresión real (ZIP admite algunos otros algoritmos de compresión, así como una opción; el método 8 es el que corresponde a la compresión de GZIP); la diferencia está en el formato de metadatos. Dado que los metadatos no están comprimidos, es bastante simple quitar los encabezados gzip y agregar encabezados de archivos ZIP y un registro de directorio central en su lugar. Consulte la especificación del formato gzip y la especificación del formato ZIP .
cat file1.gz file2.gz file3.gz > allfiles.gz
. Realmente es así de simple :)cat
respuesta pero con algunos metadatos adicionales. Luego puede descomprimirlos para obtener los nombres de archivo originales y luego descomprimir todos o solo algunos según sea necesario.zcat
descomprime su entrada, por lo que le daría una salida descomprimida con una.gz
extensión.Esto es lo que
man 1 gzip
dice sobre su requerimiento.No hace falta decir que
file1
se puede reemplazar porfile1.gz
.Debes notar esto:
Entonces, para obtener a todos los miembros individualmente, tendrá que usar algo adicional o escribir, si lo desea.
Sin embargo, esto también se aborda en la página de manual.
fuente
Solo usa cat. Es muy rápido (0.2 segundos por 500 MB para mí)
Luego puede leer la salida con zcat para asegurarse de que sea bonita:
Probé la otra respuesta de 'gz -c' pero terminé con basura cuando usé archivos ya comprimidos con gzip como entrada (supongo que los comprimió dos veces).
PV:
Mejor aún, si lo tiene, 'pv' en lugar de cat:
Esto le da una barra de progreso mientras funciona, pero hace lo mismo que cat.
fuente
Puede crear un archivo tar de estos archivos y luego gzip el archivo tar para crear el nuevo archivo gzip
fuente