私は仕事でよくディレクトリを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-Zip の gz 版のようなものです。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