Question

Dire que j'ai un fichier bzip2 (plus de 5 Go), et je veux décomprimer n ° x seul bloc, parce qu'il est là que mes données sont (bloc est différent à chaque fois). Comment puis-je faire?

Je pensais à faire un indice de l'endroit où tous les blocs sont, puis couper le bloc que j'ai besoin à partir du fichier et d'appliquer bzip2recover à lui.

J'ai aussi pensé à la compression dire 1Mo à un moment, puis annexant à un fichier (et l'enregistrement de l'emplacement), et saisissant simplement le fichier quand j'ai besoin, mais je préfère garder le fichier bzip2 d'origine intact.

Ma langue préférée est Ruby, mais la solution de toute langue est bien pour moi (aussi longtemps que je comprends le principe).

Était-ce utile?

La solution

Il y a un http://bitbucket.org/james_taylor/seek-bzip2

Prenez la source, le compiler.

Exécuter avec

./seek-bzip2  32 < bzip_compressed.bz2 

pour tester.

est le seul param déplacement de bit de tête du bloc demandé. Vous pouvez l'obtenir avec la recherche d'un « 31 41 59 26 53 59 » chaîne hexadécimale dans le fichier binaire. CE ERRONE. début du bloc peut être pas aligné sur la limite d'octet, donc vous devez rechercher tous les décalages de bits possibles de « 31 41 59 26 53 59 » chaîne hexagonale, comme cela se fait dans bzip2recover - http://www.bzip.org/1.0.3/html/recovering.html

32 est la taille binaire de « BZh1 » en-tête où 1 peut être un chiffre de « 1 » à « 9 » (en bzip2 classique) - il est une taille de bloc (non compressé) dans des centaines de kb (non exacte) <. / p>

Autres conseils

Il est vrai que bzip table est presque aussi lent que bien sûr, mais décompresser il vous suffit de le faire une fois et vous pouvez stocker la sortie d'une certaine façon à l'utiliser comme un indice. C'est parfait pour ce que je dois, mais peut-être pas ce que tout le monde a besoin.

Je l'ai besoin d'un peu d'aide pour à compiler sous Windows si.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top