tar.bz2 をサーバーログアーカイブとして使用します。また、これらのアーカイブログをオプションで解析するツールも作成しました。同じアーカイブに含まれる他のログが解析ニーズに関連していることを確認するために、アーカイブのファイル行で正規表現検索を実行する必要があることがよくあります。 (ファイル名/パスの正規表現の一致があります。)パフォーマンスの観点から見ると、いくつかの制限に直面しているようです。しかし、私の知識レベルにギャップがあるかもしれません。私は主にPythonでスクリプトを作成し、基本的なbash技術を持っています。アーカイブは大容量で、インストールに保存されます。特に、アーカイブが完全な解析に適していない場合は、読み取りおよびローカル/一時的な保存をできるだけ避けたいと思います。
オプション1(帯域幅とCPUリソースの浪費、ローカルストレージの節約)
- bz2ファイル全体をローカルディスクに読み込みます。
- ファイルリストをスキャンすると、tarの解凍が行われます。
- 再度解凍して最初のログファイルを検索してください。
- その後、アーカイブが基準を満たしている場合は再度解凍し、解析する必要があるログを抽出します。
- 次のアーカイブに移動
または(ローカルストレージを無駄にし、帯域幅を無駄にする)
- bz2ファイル全体をローカルディスクに読み込みます。
- 潜在的に興味深い基準を満たすほとんどのファイルを抽出します(ほとんどのコンテンツをインポートする必要があります)。
- 今、すべてのファイルは私のローカルファイルシステムにあります。最初のログスキャン
- その後、条件が満たされたら、解析する必要があるログに進みます。
- ローカルストレージをすべて削除し、次のアーカイブに移動します。
7zip zip rar bz2などの圧縮ツールを調べると、ほとんどのリンクは圧縮速度と圧縮サイズに関する情報を提供します。長期的に圧縮サイズが重要なので、7zipのようなものを使いたいです。これは私の質問の基礎ではありません!しかし、私はまた、zipがファイルの完全なリストを公開し、アーカイブ全体を解凍することなく単一のファイルを抽出できると考えています。 (ファイルリストがヘッダーにあるため...)しかし、zipはLinuxではそれほど基本的ではありません。
プロセスを最適化するために既存のtar.bz2を使用する方法はありますか?どのツール/アプローチを検討する必要がありますか? (タールを捨てて7zipを使用しますか?)
答え1
zip
Linux固有のものではありませんが、ソースコードがあれば気にする必要はありません。
一方、7zip
同様のデータの複数のエントリを含むtarファイルのパフォーマンスが向上し、圧縮することは基本的にxz
一度に1つのファイルを圧縮するよりも優れています。zip
これによりzip
、ファイルが破損している場合(破損によって)回復することができますが、圧縮されたtarアーカイブは通常、回復する必要がある問題が多いか、または回復できないことが多いです。
圧縮されたbz2ファイルの生成を変更する機会がある場合(そうでなければ尋ねない)、生成する代わりに、次の手順を実行しますtar.bz2
。
index.lst
を使用して作成find <list_of_files_to_archive> > index.lst
- index.lst + list_of_files_to_archiveからtar.xzを生成します。
これにより、index.lst
アーカイブ全体を解凍せずにファイルをすばやく抽出し、index.lstの内容に基づいて正しいアーカイブがあることを確認できます。tar
解凍後に標準が停止するかどうかはわかりませんindex.lst
(アーカイブに他の標準がある可能性があるため)、Python tarモジュールを使用して解凍後に停止し、index.lstファイルをディスクに保存せずにすぐに解析します。 、追加の速度向上)。