ディレクトリツリーでtar.gzを実行する最速の方法は何ですか?

ディレクトリツリーでtar.gzを実行する最速の方法は何ですか?

次のファイルを含むディレクトリツリーがあります。


|-- 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/

関連情報