Pregunta

Digamos que hay a.gz y b.gz.

$ gzip_merge a.gz b.gz -output c.gz

Me gustaría tener este programa. Por supuesto,

$ cat a.gz b.gz > c.gz

no funciona. Porque el bloque DEFLATE final de a.gz tiene BFINAL y el encabezado GZIP de b.gz. (Consulte RFC1951, RFC1952) Pero si desarma BFINAL, deseche el segundo encabezado GZIP y recorra los límites de bytes del segundo archivo gzip, puede fusionarlo.

De hecho, pensé en escribir un programa de código abierto para este asunto, pero no sabía cómo publicarlo. Así que le pedí al Joel que fuera mi gerente de programa, y ??lo guié a través de mi explicación y defensa, finalmente entendió lo que quería hacer, pero dijo que estaba demasiado ocupado. :(

Por supuesto, podría escribir uno yo mismo y tratar de publicarlo. Pero no puedo hacer esto solo porque mi trabajo diario pertenece a la propiedad de mi empleador.

¿Hay algún voluntario? Podríamos trabajar como programador (yo), editor (usted) o programador (usted), editor (yo). Todo lo que necesito es un poco de crédito. Una vez implementé una máquina virtual de descompresor universal descrita en RFC3320. Entonces sé que esto es factible.

O, podrías indicarme ESE programa. Sería muy útil para administrar archivos de registro como fusionar 365 (día) archivos de registro comprimidos en uno. ;)

Gracias.

¿Fue útil?

Solución

  

Por supuesto, cat a.gz b.gz > c.gz no funciona.

En realidad, funciona bien. Lo acabo de probar. Incluso está documentado (más o menos) en la página de manual de gzip.

   Multiple  compressed  files  can  be concatenated. In this case, gunzip
   will extract all members at once. For example:

         gzip -c file1  > foo.gz
         gzip -c file2 >> foo.gz

   Then

         gunzip -c foo

   is equivalent to

         cat file1 file2

Otros consejos

También podrías:

zcat a.gz b.gz > c.txt && gzip c.txt

siempre y cuando su distribución Linux / Unix tenga integrado zcat, lo que la mayoría de ellos hace (y podría instalarlo para los que no lo tienen)

Alternativamente:

zcat a.gz b.gz | gzip -c > c.txt.gz
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top