tar.gz の圧縮率を指定する

tar でくるんだファイルを圧縮するのに gzip 通したりするじゃないですか。

 

tar c /files/* | gzip -c > /tmp/example.tar.gz

 

圧縮率を変えたかったら( 1~9 まであって、1が一番速くて低圧縮、9が一番遅くて高圧縮)オプションに数字を付ければいい。たとえばこんな。

 

tar c /files/* | gzip -c -9 > /tmp/example.tar.gz

 

GNU 版の tar だとパイプ通さなくてもオプションで指定できるのが便利なんだけど、たとえばこんな。

 

tar zcf /tmp/example.tar.gz /files/*

 

じゃあ圧縮率の指定はどこでするの? man page を見てもそんなオプションは無いし…

gzip 用の環境変数で指定すれば良いのでした。

 

GZIP=-9 tar zcf /tmp/example.tar.gz /files/*

 

とか

 

export GZIP=-9
tar zcf /tmp/example.tar.gz /files/*

 

といったかんじで。なるほど。

近頃はストレージもたっぷりあるし元々内部で圧縮されてるファイルも多く、あんまり時間かけてつぶしても仕方ないことが多くて、CPU をシェアしてるような環境だと圧縮率低めにすることが多いです。 GZIP=-2 みたいなかんじで。これでもテキストファイルなんかのつぶれやすいファイルはそこそこつぶれますんで。環境によっちゃあもう数キロバイトをケチる世界じゃないんで。