次のファイルを含むディレクトリツリーがあります。
。 |-- 00 |-- 00 |-- 00 |-- 01 |-- 02 |-- 03 |-- 04 |-- 05 [..] |-- 97 |-- 98 |`-- 99 |-- 01 |-- 00 |-- 01 [...]
各ディレクトリには約200個のファイルが含まれており、ファイルが多すぎました。コンテンツ全体をtar.gzにする最速の方法は何ですか?複数のCPUに対してジョブを並列に実行できますか?
答え1
含める最上位ディレクトリ(またはディレクトリ)を指定すると、tar
すべての子ディレクトリを再帰的にドリルダウンしてすべてを完了します。
tar cvfz output.tar.gz /path/to/top_folder
(@forcefsckが指摘したように、オブジェクトが生の速度である場合は、v
端末からそのオプションを省略して詳細情報を減らすことができます。すべてのファイルをエコーしないことで、端末と通信するI / O時間を少し節約できます。)
答え2
以下では、--fast
オプションのエイリアスをgzipに渡すことができます。-1
GZIP=--fast tar czf output.tar.gz /path/to/top_folder
または
GZIP=-1 tar czf output.tar.gz /path/to/top_folder
一部の環境では、この変数をGZIP_OPT
置き換えることができますGZIP
。
答え3
ext [234]ファイルシステムでは、dump
特にMaildirなどの多くの小さなファイルの場合、tarよりはるかに高速です。また、同時圧縮に複数のコアを使用します。 1MBのブロックサイズに-b 1024を使用することをお勧めします。これはデフォルトの10kbブロックサイズよりはるかに優れています。
答え4
はい、Pigzの場合:
tar --use-compress-program="pigz --best --recursive" -cf file.tar.gz folder/
tar -cf file.tar.gz -I pigz folder/