圧縮率をbestに変えたい
圧縮率を変えるには、再圧縮が必要
gzip -cd old.gz | gzip > new.gz
伸長(展開)してからやるとストレージが無駄になる。
gzip -cd dump.gz gzip -best dump
そこで、直接パイプしてあげればいい
gzip -cd dump.gz | gzip > dump.gz.2
巨大ファイルで時間のかかるとき
pv と組み合わせて、進捗を表示しつつ
pigz で CPUパワーをフルパワーで使ってやる。
pv -cN read dump.gz | pigz -d -p4 | pigz --best -p 4 | pv -cN compress > dump.gz.2
インストール
sudo apt install pv pigz
圧縮アルゴリズムを変更するときも同様
gzipからxz に変えたいときも同様にできる。
gzip -cd old.gz | xz > new.gz
圧縮アルゴリズムの選定基準
圧縮アルゴリズムを「圧縮時間」「圧縮率」だけで比較するのは、だめ。
xz は圧縮には時間が掛かるが、展開は速い。そのため。「XZは、誰か一人がCPU時間を提供して、多くの利用者が展開で使う」ようなときに大変メリットがある。だからリナックスのカーネルとかに使われてたりする。
gzip は圧縮時間も圧縮率もそこそこで、使いやすい。「gzipはどこでも使えるオールラウンダ」ってことだし。
圧縮は、繰り返しデータの出現に対し行われるので、ディスクイメージに空き容量があればとても圧縮が効く。
だけど、CD-ROMやUbuntuのインストールUSBのような重複コンテンツは殆どなく容量いっぱいまで使われているストレージには、圧縮は殆ど効果を発揮しない。時間を掛けてXZで圧縮してもGzipでサクッと圧縮してもgzip/xzの結果で数MBも変わらない。
圧縮がどれくらい効くファイルなのか、ちゃんと予想くらいは立てて圧縮作業の展望を持っておかないと、圧縮率を変えても、圧縮アルゴリズムを変更しても電気の無駄遣いになるだけなので注意です。
「完全なランダムデータ」は圧縮が効かないってことをちゃんとわかった上で、ランダムデータに近いものほど圧縮効果が無いことを忘れないでほしいのです。