Dividere il file gzip in file gz più piccoli senza ricomprimerlo


9

Ho un grande file .gz. Vorrei dividerlo in 100 file gzip più piccoli, ognuno dei quali può essere decompresso da solo. In altre parole: non sto cercando un modo per tagliare il file .gz in blocchi che dovrebbero essere rimessi insieme per poterlo decomprimere. Voglio essere in grado di decomprimere ciascuno dei file più piccoli in modo indipendente.

Può essere fatto senza ricomprimere l'intero file?

Può essere fatto se il file originale è compresso con --rsyncable? ("Soddisfa meglio il programma rsync ripristinando periodicamente la struttura interna del flusso di dati compressi." Sembra che questi punti di ripristino possano essere buoni posti in cui dividere e probabilmente anteporre un'intestazione.)

Può essere fatto per uno qualsiasi degli altri formati compressi? Immagino che bzip2sarebbe fattibile - poiché è compresso in blocchi.


Hai provato a dividere -b?
George Vasiliou,

3
@GeorgeVasiliou Non provocherà file gzip più piccoli che possono essere decompressi.
Ole Tange,

La risposta alla tua prima domanda è no, questo è stato trattato in Elimina ultima riga del file gz . La risposta è probabilmente no con la maggior parte dei formati compressi, poiché ciò che stai chiedendo va contro la compressione. Penso che anche la risposta sia gzip --rsyncablenegativa, dato che "il gunzip non può dire la differenza" (se potessi trovare un posto da dividere, potresti dire che c'è un posto da dividere). Potrebbe essere fattibile con bzip2 a causa della sua peculiare funzione di blocco.
Gilles 'SO- smetti di essere malvagio' il

Questo può essere d'aiuto: stackoverflow.com/a/22628945/4941495 Lascia che il flusso di input standard sia l'output di gzip -d -c bigfile.gz.
Kusalananda

Senza ricomprimere, sarebbe effettivamente possibile con un bzip2file. Sarebbe fattibile con gzo xzsolo comprimendo ogni blocco in modo indipendente, quindi ciò richiederebbe una ricompressione.
Xhienne,

Risposte:


0

La divisione e l'unione del file di grandi dimensioni funzionano, ma è impossibile decomprimere parti del file compresso, poiché le informazioni essenziali sono distribuite attraverso l'intero set di dati. Un altro modo; dividere il file non compresso e comprimere le singole parti. Ora puoi decomprimere ogni pezzo. Ma perché? È necessario unire tutte le parti decompresse prima di un'ulteriore elaborazione.


1
Curiosità: quando hai le parti compresse individualmente (usando gzipo xz), puoi fare concatenazione e decompressione o decompressione e concatenazione. L'ordine non ha importanza.
Kusalananda

Forse dipende dai dati. Se dividi e comprimi le immagini del disco, hai la possibilità di recuperare parti del filesystem. Se prima comprimi e poi dividi, non hai assolutamente alcuna possibilità.
ingopingo,

No, e neanche questa era la mia premessa. Ho appena detto che l'ordine in cui si esegue la concatenazione e la decompressione quando si hanno parti compresse singolarmente non ha importanza (ciò è dovuto ai formati di file compressi). Se si comprime prima, quindi si divide, quindi ovviamente è necessario ricombinare prima.
Kusalananda

Oh che bello. Funziona, anche se ogni parte contiene un'intestazione di file individuale!
ingopingo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.