CentOSでのファイルの圧縮にxzを使う
Linuxでファイルを圧縮するときは普通gzipやbzip2を使いますが、これらよりも圧縮率の大きいxzというのを使ってみました。
インストール方法
普通にyum install xzとすればインストールできますが、バージョンが古いのでソースからインストールします。
xzのサイトから最新のSource Codeをダウンロード(これを書いている時点での最新版は5.01です。)
wget http://tukaani.org/xz/xz-5.0.1.tar.bz2
解凍
tar jxvf xz-5.0.1.tar.bz2
ビルドしてインストール
cd xz-5.0.1
./configure
make
make install
これで、/usr/local/bin/xzにインストールされます。
使い方
基本的にgzipやbzip2と同じです。
一応 xz -hと実行した内容を貼っておきます。
Usage: xz [OPTION]… [FILE]…
Compress or decompress FILEs in the .xz format.-z, –compress force compression
-d, –decompress force decompression
-t, –test test compressed file integrity
-l, –list list information about .xz files
-k, –keep keep (don’t delete) input files
-f, –force force overwrite of output file and (de)compress links
-c, –stdout write to standard output and don’t delete input files
-0 … -9 compression preset; default is 6; take compressor *and*
decompressor memory usage into account before using 7-9!
-e, –extreme try to improve compression ratio by using more CPU time;
does not affect decompressor memory requirements
-q, –quiet suppress warnings; specify twice to suppress errors too
-v, –verbose be verbose; specify twice for even more verbose
-h, –help display this short help and exit
-H, –long-help display the long help (lists also the advanced options)
-V, –version display the version number and exit
適当な訳
Usage: xz [OPTION]… [FILE]…
Compress or decompress FILEs in the .xz format.-z, –compress 圧縮
-d, –decompress 解凍
-t, –test 圧縮したファイルが壊れてないかテスト
-l, –list .xzファイルの中身のファイルの情報を表示
-k, –keep 圧縮元のファイルを消さない
-f, –force 出力先にすでにファイルがあっても上書きする
-c, –stdout ファイルに出力しないで標準出力に出力
-0 … -9 圧縮率の設定。デフォルトが6で、7-9を指定すると圧縮・解凍するときにたくさんメモリを使うよ。
-e, –extreme CPUをたくさん使って圧縮するよ。ただ、この場合は解凍するときにそんなにメモリは使わないよ
-q, –quiet 警告を無視。二回指定するとエラーも無視
-v, –verbose 冗長化してファイルの一部が壊れてても直せるようにするよ。二回指定すると冗長化に使う容量を増やすよ。
-h, –help ヘルプを表示
-H, –long-help 長いヘルプを表示
-V, –version バージョンを表示して終了
基本的には、圧縮するときはxz ファイル名、解凍するときはxz –d ファイル名で大丈夫です。
bzip2(1.06)との比較
同じファイルを圧縮していってbzip2との性能の比較をしてみたいと思います。
比較に使った元ファイルはWordPressのデータベースをエクスポートしたテキストファイルです。
また、bzip2、xzともに圧縮時にオプションはつけていません。
| サイズ | パーセント | 圧縮時間 | 使用したメモリ | |
| 元ファイル | 9.94 MB | |||
| bzip2 | 1.07 MB | 10.8 % | 6 秒 | 7 MB |
| xz | 808 KB | 7.9 % | 10 秒 | 73 MB |
ファイルサイズは小さくなっていますが、圧縮にかかる時間が長くなり、メモリに関しては10倍近くになっています。
あと、圧縮作業はVPSで行っているので普通のパソコンでやったらもっと早くなると思います。
tarからの利用
実はtar1.22からxzが使えるようになっています。
ですが、試してみようとしたのですが、エラーが出てビルドできません…
なので、どうにかしてtarを入れるかパイプを使って一度tarで固めたものをxzに渡して圧縮するかになります。
後者は割と簡単にできるし、この方法だとxzのオプションの指定が楽なのでこっちでいいと思う。
まとめ
圧縮時間が増えるけど、その分ファイルサイズも小さくなっています。
ただ、メモリに関しては相当増えるのでメモリが少ない環境では使えないかも。
冗長化などはgzipやbzip2では使えないので、そういった機能を使いたい場合は便利だと思う。