Dire che ho un file bzip2 (oltre 5 GB) e voglio decomprimere solo il blocco #x, perché è dove sono i miei dati (il blocco è diverso ogni volta). Come lo farei?Solo decomprimere un blocco bzip2 specifico
Ho pensato di fare un indice di dove sono tutti i blocchi, quindi tagliare il blocco di cui ho bisogno dal file e applicare bzip2recover su di esso.
Ho anche pensato di comprimere 1 MB alla volta, quindi aggiungerlo a un file (e registrare la posizione) e semplicemente afferrare il file quando ne ho bisogno, ma preferisco mantenere intatto il file originale di bzip2.
La mia lingua preferita è Ruby, ma la soluzione di qualsiasi lingua va bene per me (purché comprenda il principio).
sic! l'inizio del blocco non può essere un limite di byte :(C'è un programma bzip-table incluso in "seek-bzip2" per ottenere l'elenco di spostamento dei bit e dimensioni delle dimensioni dei blocchi dati originali. – osgx
sfortunatamente, "bzip-table" è quasi lo stesso velocità come decompressione effettiva :(. Fa un ciclo di decompressione quasi completo, ma non controlla CRC. – osgx
Inoltre, dai un'occhiata a bzips paralleli, come pbzip2 di Jeff Gilchrist.Nella decompressione parallela è necessario cercare le intestazioni di blocco. http://www.google.com/codesearch/p?hl=it#calSvFpbfuI/trunk/trunk/demo/pbzip2-1.0.2/pbzip2.cpp&q=pbzip2&sa=N&cd=2&ct=rc&l=3 Funzione 'producer_decompress' – osgx