Domanda

Diciamo che c'è a.gz e b.gz.

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

Mi piacerebbe avere questo programma. Certo,

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

non funziona. Perché il blocco DEFLATE finale di a.gz ha BFINAL e l'intestazione GZIP di b.gz. (Fare riferimento a RFC1951, RFC1952) Ma se si disinserisce BFINAL, si getta via la seconda intestazione GZIP e si cammina attraverso i limiti di byte del secondo file gzip, è possibile unirlo.

In effetti, ho pensato di scrivere un programma open source per questo argomento, ma non sapevo come pubblicarlo. Così ho chiesto a Joel di essere il mio responsabile del programma, e l'ho guidato attraverso la mia spiegazione e difesa, finalmente ha capito cosa volevo fare, ma ha detto che era troppo occupato. : (

Certo, potrei scriverne uno io stesso e provare a pubblicarlo. Ma non posso farlo da solo perché il mio lavoro quotidiano appartiene alla proprietà del mio datore di lavoro.

Ci sono volontari? Potremmo lavorare come programmatore (me), editore (tu) o programmatore (tu), editore (me). Tutto ciò di cui ho bisogno è un po 'di credito. Una volta ho implementato una macchina virtuale Universal Decompressor descritta in RFC3320. Quindi so che questo è fattibile.

OPPURE, potresti indicarmi quel programma. Sarebbe molto utile per la gestione di file di registro come l'unione di file di registro compressi con tag 365 (giorno) in uno. ;)

Grazie.

È stato utile?

Soluzione

  

Certo, cat a.gz b.gz > c.gz non funziona.

In realtà, funziona benissimo. L'ho appena provato. È persino documentato (una specie di) nella pagina man di 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

Altri suggerimenti

Potresti anche:

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

fintanto che la tua distribuzione Linux / Unix ha incorporato zcat, cosa che la maggior parte di loro fa (e potresti installarla per quelli che non lo fanno.)

In alternativa:

zcat a.gz b.gz | gzip -c > c.txt.gz
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top