ファイル圧縮・展開の時間を短縮したい場合には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 # 展開