Domanda

Di 'Ho un file bzip2 (oltre 5 GB), e voglio per decomprimere solo blocco #x, perché non v'è dove il mio dati è (blocco è diverso ogni volta). Come faccio a fare questo?

Ho pensato di fare un indice di dove tutti i blocchi sono, quindi tagliare il blocco di cui ho bisogno da file e si applicano bzip2recover ad esso.

Ho anche pensato di comprimere dire 1MB alla volta, poi aggiungendo ad un file (e la registrazione della posizione), e semplicemente afferrando il file quando ne ho bisogno, ma io preferirei mantenere intatto il file bzip2 originale.

La mia lingua preferita è Ruby, ma la soluzione di ogni lingua è bene per me (finché ho capito il principio).

È stato utile?

Soluzione

C'è un http://bitbucket.org/james_taylor/seek-bzip2

Afferra la fonte, compilarlo.

Corri con

./seek-bzip2  32 < bzip_compressed.bz2 

per provare.

l'unico parametro è po spostamento di intestazione del blocco chiesti. È possibile ottenere con ricerca di un "31 41 59 26 53 59" stringa esadecimale nel file binario. Questo non era corretto. inizio blocco può non essere allineato al limite di byte, così si dovrebbe cercare ogni possibile bit turni di "31 41 59 26 53 59" stringa esadecimale, come si è fatto in bzip2recover - http://www.bzip.org/1.0.3/html/recovering.html

32 è formato po 'di "BZh1" header dove 1 può essere qualsiasi cifra da "1" a "9" (in bzip2 classico) - si tratta di una (non compresso) dimensione del blocco in centinaia di kb (non esatto) <. / p>

Altri suggerimenti

E 'vero che bzip-tavolo è quasi lento come decomprimere ma naturalmente si hanno a che fare solo una volta e si può memorizzare l'output in qualche modo da utilizzare come un indice. Questo è perfetto per quello che mi serve, ma non può essere quello che tutti hanno bisogno.

ho bisogno di un piccolo aiuto ottenerlo per compilare su Windows però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top