niceとtarで圧縮レベルを設定する

niceとtarで圧縮レベルを設定する

ここで圧縮レベルを設定するにはどうすればいいですか?

nice -n 19 tar -czf $out $in

答え1

nice圧縮レベルには何も影響しません。カーネルによるプロセスのスケジュールにのみ影響します。以下のすべてのコマンドは、nice異なる「nice」レベルで実行するために をプレフィックスとして付けることができます。これは圧縮レベルには影響せず、アクションの実行にかかる時間のみに影響します (システムの負荷が高い場合)。

GNU を使用している場合はtar、圧縮プログラムは または-I--use-compress-programオプションのいずれかで設定できます。

$ tar -I "gzip --best" -c -f archive.tar.gz dir

または

$ tar --use-compress-program="gzip --best" -c -f archive.tar.gz dir

圧縮プログラムを明示的に設定する場合は、この-zオプションを使用しないことに注意してください。

GNUtarマニュアルには、使用するプログラムが-d解凍オプションをサポートしている必要があると記載されています (圧縮されたアーカイブを解凍するためにこれらのオプションを使用する場合) gzip

私が見た限りでは、 BSD ではtar同様の方法で圧縮レベルを指定することはできません。

これを実現するもう 1 つの方法は、明らかに、圧縮されていないアーカイブを作成し、それを希望どおりに圧縮することです。

$ tar -c -f archive.tar dir
$ gzip --best archive.tar

または

$ tar -c dir | gzip --best -o archive.tar.gz

まだ別のGZIP方法は、渡したいフラグを環境変数に設定することですgzip

$ export GZIP='--best'
$ tar -c -z -f archive.tar.gz dir

-Iとの使用を除いて--use-compress-program、最後のいくつかの選択肢は GNU と BSD の両方で動作しますtar

関連情報