
ファイルの圧縮アーカイブを作成し、そこから個々のファイル/ディレクトリをすばやく抽出できるようにする必要があります。
問題は、たとえば、tar.bz2 はこのようなタスクには最適な選択肢ではないようです。200 MB のアーカイブ (50000 ファイル) から 1 つの 4 KB ファイルを抽出するのに、私のマシンでは 17 秒かかります。
アーカイブから個々のファイルを高速にエクスポートできる (Linux でも動作する) アーカイブ形式はありますか?
答え1
ピクズxz の並列インデックスバージョンです。
# Compress:
tar -I pixz -cf foo.tar.xz ./foo
# Decompress:
tar -I pixz -xf foo.tar.xz
# Very quickly list the contents of the compressed tarball:
pixz -l foo.tar.xz
# Very quickly extract a single file:
pixz -x dir/file < foo.tar.xz | tar x
答え2
Zip 形式では、各ファイルを個別に圧縮し、それらを (アーカイブ コンテンツのディレクトリとともに) 単一のアーカイブ ファイルに結合します。
答え3
すでに述べた zip 形式に加えて、dar
およびdump
ユーティリティもこの処理に適しており、zip とは異なり、unix 権限を保持します。 については、dar
solid archive オプションの使用は避けてください。これは、一度に全体を圧縮する tar/gzip 方式に戻るためです。これにより、圧縮率は向上しますが、目的のファイルが見つかるまでファイル全体を解凍する必要があるため、個々のファイルの抽出に時間がかかります。 は、 dump
小さなファイルの大規模なセット (数万) をかなりうまく処理し、マルチスレッド圧縮を行うことができますが、ext[234] ファイルシステムしか読み取りません。
答え4
.tar.gz
解凍速度は速くなりますが、その代わりに圧縮サイズは最悪になります。編集: Ignacio Vazquez-Abrams が私を忍び込ませました。