bzip2ファイル(5GB以上)があり、私のデータがどこにあるのか(毎回ブロックが異なるため)ブロック#xを解凍したいとします。どうすればいい?特定のbzip2ブロックのみを解凍する
私はすべてのブロックのインデックスを作成し、ファイルから必要なブロックを切り取り、bzip2recoverを適用することを考えました。
私は一度に1MBというファイルを圧縮して、ファイルに追加して(場所を記録して)、必要なときにファイルを取得することも考えましたが、オリジナルのbzip2ファイルをそのまま維持したいと考えています。
私の好みの言語はRubyですが、どの言語の解決策も私のものです(原則を理解している限り)。
sic!ブロック開始はバイト境界ではありません:(オリジナルのデータブロックサイズのビット変位とサイズのリストを取得するために "seek-bzip2"に含まれるbzipテーブルのプログラムがあります) – osgx
"bzip-table"はほぼ同じです実際に解凍する速度:(それはほぼ完全な解凍サイクルを行いますが、CRCをチェックしません – osgx
また、Jeff Gilchristのpbzip2のような並列bzipsを見てください。並列解凍では、ブロックヘッダーを検索する必要があります。 http://www.google.com/codesearch/p?hl=en#calSvFpbfuI/trunk/trunk/demo/pbzip2-1.0.2/pbzip2.cpp&q=pbzip2&sa=N&cd=2&ct=rc&l=3 'producer_decompress'関数 – osgx