ファイル圧縮・展開の時間を短縮したい場合にはlzopを使う
ここに約8.2GBのファイルexample.sqlがあります。これを圧縮したいとします。
私のPCでは、bzip2で圧縮すると884秒(15分弱)、gzipでは347秒(6分弱)かかりました。他方、lzopで
lzop example.sql
としたら、120秒(2分)で終わりました。速!
lzop -d example.sql.lzo
で展開すると153秒(約2分半)でした。同様にbzip2で圧縮したのを展開すると245秒(約4分)で、gzipの場合は342秒(約5分半強)でした。圧縮時ほど明確ではありませんが、lzopがいちばん速いですね。
圧縮後のファイルサイズは、bzip2で1.3GB(約16%)、gzipで1.9GB(約23%)、lzopで3.1GB(約37%)となりました。
また、知人からの報告によれば約200GBのファイル(中身はSQL)を圧縮したときにgzipでは約17時間かかったのに、lzopでは約1.5時間で終わったそうです(bzip2のデータなし)。ディスクスペースより時間が貴重なケースではlzopの利用を検討しましょう。
判断がちょっと難しいのは、巨大なファイルをサーバからサーバに移動する時間を最小にするにはどれを選ぶか、という問題です。
仮に1GBを転送するのに1分かかるとすると、先ほどの例では、bzip2を使えばlzopよりも約1.8GB分転送量が減るので、2分弱の時間節約です。しかし、圧縮と展開で約15分損しているので、lzopを使うべしという結論になります。
けれども、1GBを転送するのに10分かかるなら、bzip2を使えば転送時間が約18分も節約できるので、bzip2の方が有利になります。
試しに、さくらインターネットで借りているVPSから私のPCにscpでファイルを転送してみたら、1GBあたり約4分かかりました。計算上はlzop有利ですが、常にこの転送速度が可能とは限らないので判定は微妙です。
ちなみにlzopをtarと一緒に使うときは、次のようなコマンドとなります。
tar --lzop -cf example.tar.lzo example # 圧縮
tar --lzop -xf example.tar.lzo # 展開