3

bz2ファイルに配置された約200,000のテキストファイルがあります。私が抱えている問題は、bz2ファイルをスキャンして必要なデータを抽出すると、非常に遅くなることです。私が探している単一のファイルを細かくするために、bz2ファイル全体を調べる必要があります。これをスピードアップする方法はありますか?

また、tar.bz2内のファイルを整理して、代わりにどこを見ればよいかを知ることができるようにすることも考えました。bz2に入れられるファイルを整理する方法はありますか?

詳細/編集:各テキストファイルの圧縮ファイルをクエリする必要があります。このような多数のファイルをサポートし、完全に圧縮される、より優れた圧縮方法はありますか?

4

2 に答える 2

6

bzip2を使用する必要がありますか?ドキュメントを読むと、ランダムアクセスをサポートするように設計されていないことは明らかです。おそらく、要件により厳密に一致する圧縮形式を使用する必要があります。古き良きZip形式はランダムアクセスをサポートしていますが、もちろん圧縮率が低くなる可能性があります。

于 2010-08-16T14:30:03.003 に答える
0

Bzip2は大きなブロックに圧縮されます(デフォルトでは900 KiBだと思います)。tarファイルのスキャンを劇的に高速化するが圧縮パフォーマンスを低下させる1つの方法は、各ファイルを個別に圧縮してから、結果を一緒にtarすることです。これは基本的にZip形式のファイルです(bzip2ではなくzlib圧縮を使用しています)。ただし、tarインデックスを簡単に取得して、探している特定のファイルを解凍するだけで済みます。

ほとんどのプログラムは、意味のある方法でファイルを整理する機能をあまり提供していないと思いtarますが、特別な場合にこれを行うプログラムを作成することはできます(Pythonにはtar書き込みライブラリがありますが、使用したのは1回か2回だけです。 )。ただし、探しているものを見つける前に、ほとんどのデータを解凍しなければならないという問題があります。

于 2010-08-16T14:31:28.677 に答える