アーカイブ

2011 年 2 月 のアーカイブ

CentOSでのファイルの圧縮にxzを使う

2011 年 2 月 20 日 コメントはありません

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では使えないので、そういった機能を使いたい場合は便利だと思う。

カテゴリー: Linux タグ: , , , ,