Lzma は、Lempel-Ziv-Markov chain Algorithm の略です。 ルズマ ファイルを圧縮および解凍するための bzip2 および gzip のような圧縮ツールです。 bzip 圧縮よりもはるかに高速で効率的です。ご存知のように、gzip の圧縮率は bzip2 (および lzma) よりも劣っています。
この記事では、圧縮率が大幅に向上し、操作が高速化される効果的な圧縮ユーティリティである lzma の使用方法を理解しましょう。
lzma -c を使用して入力テキスト ファイルを圧縮します
$ lzma -c --stdout sample.txt >sample.lzma
-d オプションを使用して lzma ファイルを解凍します
$ lzma -d –stdout sample.lzma >sample.txt
bzip2 と lzma 圧縮ツールの比較
lzma の有効性を理解するために、1MB の sample.txt を lzma と bzip2 の両方で圧縮/解凍し、結果を比較してみましょう。これらのテストは、1 GB の RAM を搭載し、プロセッサが Pentium 4 であるマシンで行われました。
sample.txt 入力ファイルのサイズ:
$ ls -l sample.txt -rw-r--r-- 1 bala bala 1048576 2010-05-14 19:43 sample.txt
注: すべての圧縮および解凍コマンドの前に time コマンドを使用して、コマンドの CPU 使用率を取得しました。
bzip2 を使用して sample.txt を圧縮します
入力ファイルを bzip2 コマンドで圧縮すると、圧縮時にオプションは必要ありません。
$ time bzip2 sample.txt real 0m27.874s user 0m13.981s sys 0m0.148s $ ls -l sample.txt.bz2 -rw-r--r-- 1 bala bala 1750 2010-05-14 19:43 sample.txt.bz2
bzip2 の後 圧縮、出力ファイル サイズは 1750 バイト .
bunzip2 を使用して sample.txt を解凍します
bunzip2 ユーティリティを使用して圧縮ファイルを解凍します。オプションを渡す必要もありません。
$ bunzip2 sample.txt.bz2 real 0m0.232s user 0m0.128s sys 0m0.020s
lzma を使用して sample.txt を圧縮します
それでは、次のオプションを指定して lzma コマンドを使用して sample.txt を圧縮しましょう:
- -c で圧縮
- –stdout で圧縮された出力を出力します
$ time lzma -c --stdout sample.txt >sample.lzma real 0m2.035s user 0m1.544s sys 0m0.132s $ ls -l sample.lzma -rw-r--r-- 1 bala bala 543 2010-05-14 19:48 sample.lzma
圧縮後、lzma サイズが 543 バイト の出力ファイルを生成します 、これは bzip2 コマンドよりも比較的少ないです。また、上記のように、lzma が使用する CPU 時間は bzip2 よりもはるかに少ないです。
lzma を使用して sample.txt を解凍します
次のオプションを指定して lzma コマンドを使用して、*.lzma ファイルを解凍します。
- -d で圧縮
- –stdout で圧縮解除された出力を出力します
$ time lzma -d --stdout sample.lzma >sample.txt real 0m0.043s user 0m0.016s sys 0m0.004s
上記のように、lzma による解凍は bzip2 よりも何倍も高速です
さまざまなレベルの Lzma 圧縮
- Lzma は -1 から -9 までの圧縮範囲を提供します。
- -9 は最高の圧縮率で、これを行うには一定の時間とシステム リソースが必要です。これらの比率は減圧には適用されません。
- -1 は最低レベルの圧縮率であり、はるかに高速に実行されます。
低レベルの圧縮率を使用して迅速な lzma 圧縮を行うには、次の手順を実行します。
$ lzma -1 -c --stdout sample.txt >sample.lzma $ ls -l sample.lzma -rw-r--r-- 1 bala bala 548 2010-05-14 20:47 sample.lzma
注: -fast は -1 のエイリアスです。
-9 は最高レベルの圧縮率であり、低レベル比よりも圧縮に時間がかかります。高レベルの圧縮率を使用して集中的な圧縮を行うには、次の手順を実行します:
$ lzma -9 -c --stdout sample.txt >sample.lzma $ ls -l sample.lzma -rw-r--r-- 1 bala bala 543 2010-05-14 20:55 sample.lzma
注: -best は -9 のエイリアスです。