linux – tar -zcvf を使用する際に圧縮レベルを指定するには?

compression gzip linux tar

私は仕事でよくディレクトリをgzipします。普段やっていることは

tar -zcvf file.tar.gz /path/to/directory

ここで圧縮レベルを指定する方法はありますか?圧縮に時間がかかってもできるだけ最適な圧縮を使いたいです

  170  Lazer  2011-07-01


ベストアンサー

GZIP=-9 tar cvzf file.tar.gz /path/to/directory

bashを使っていると仮定して一般的にはGZIPの環境変数を「-9」にして、普通にtarを実行します

また、本当に最高の圧縮をしたいのであれば、gzip は使わないでください。lzmaか7zを使ってください

そして、gzipを使うときは(これは様々な理由で良いアイデアですが)、 pigzプログラムではなくgzipプログラムを使うことを検討してください

165  None  2011-07-01


tarにgzipフラグを使うのではなく、tar処理後に手動でファイルをgzipし、gzipプログラムの圧縮レベルを指定します

tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar

使うこともできます

tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz

gzip コマンドラインの -9 は、可能な限り最大の圧縮レベルを使用するように gzip に指示する (デフォルトは -6)

編集: @depeszのコメントを元にパイプのコマンドラインを修正しました

76  Matrix Mole  2011-07-01


最近のバージョンの tar は xz アーカイブ形式をサポートしています (GNU tar, 2009 年の 1.22 以降, Busybox 2010 年の 1.17.0 以降)

これは lzma2 をベースにしており、7-Zipgz 版のようなものです。xz サポートを必要とする要件に問題がなければ、これはより良い圧縮を提供します

tar -Jcvf file.tar.xz /path/to/directory

こちら (基本的にはこの質問のダミーですが、Unix stackexchangeにあります)には、他の投稿にあるGZIPと同様のXZ圧縮レベルを制御するためのXZ_OPT=-9環境変数もあることがわかりました

XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory

68  David C. Bishop  2012-12-19


tar cv /path/to/directory | gzip --best > file.tar.gz

マトリックスモールの第二の解答ですが、少し短くなっています

tar を呼び出すとき、オプション f は出力がファイルであることを示します。- (stdout) に設定すると、tar は出力を標準出力に書き出します

また、gzipのマニュアルページに記載されているように、ファイルが指定されていない場合、gzipは標準入力から圧縮されます。gzip の呼び出しでは - は必要ありません

オプション --best (-9 と同等) は、最高の圧縮レベルを設定します

37  carlito  2013-02-04


Iを使って圧縮プログラムを指定するオプションもあります。これには、圧縮レベルオプションを含めることができます

tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory

15  Chris Gibson  2016-06-21


そしてもちろんmacOSのbsd由来のtarは別物でなければなりません

tar -czf file.tar.gz --options gzip:compression-level=9 /path/to/directory

7  rfay  2019-01-19


タイトルとURLをコピーしました