質問

は、私のデータがどこにあるか(ブロックは毎回異なります)があるので、私は(5ギガバイトを超える)BZIP2ファイルを持っている、と私は唯一のブロック#Xを解凍してみたいと思います。私はこれをどのように行うのでしょうか?

私は、すべてのブロックが、その後、私は、ファイルから必要なブロックをカットし、それにbzip2recoverを適用している場所のインデックスを作成することについて考えます。

私はまた、一度に1メガバイトを言う圧縮してファイルにこれを追加する(と場所を記録)、そして私はそれを必要とするとき、単にファイルをつかんについて考え、私はむしろ、完全なオリジナルたbzip2ファイルを保つと思います。

(限り、私は原則を理解して)私の優先言語はRubyのですが、任意の言語のソリューションは、私が細かいです。

役に立ちましたか?

解決

http://bitbucket.org/james_taylor/seek-bzip2する

それをコンパイルし、ソースをつかみます。

タグで実行
./seek-bzip2  32 < bzip_compressed.bz2 

をテストします。

のみparamが疑問ブロックヘッダのビットの変位です。 あなたはバイナリファイルで「31 41 59 26 53 59」16進文字列を見つけるとそれを得ることができます。これは間違っていました。 //www.bzip:<のhref = "HTTP - あなたは「31 41 59 26 53 59」16進文字列、それはbzip2recoverで行われるようにあらゆる可能なビットシフトを検索する必要がありますので、ブロックの開始は、バイト境界に整列されなくてもよいです.ORG / 1.0.3 / HTML / recovering.html」REL = "nofollowをnoreferrer"> http://www.bzip.org/1.0.3/html/recovering.html の

32 1が(古典BZIP2に)「9」から「1」から任意の数字とすることができる「BZh1」ヘッダのビットサイズである - それは、KB数百に(非圧縮)ブロックサイズ(正確ではない)です<。 / P>

他のヒント

これはbzipで、表は解凍と同じくらい遅いことは事実ですが、もちろん、あなたは一度だけそれをしなければならないとあなたがインデックスとして使用するために、いくつかの方法で出力を保存することができます。これは私が必要なものに最適ですが、誰もが必要とするものではありません。

私はそれがWindows上でコンパイルするにはなって少しの助けを必要としました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top