Lzma的全称是Lempel-Ziv-Markov chain Algorithm,和bzip2/gzip一样,是一款压缩/解压软 件.它比bzip更加快速与高效。就我们所知, gzip压缩比率低于bzip2 (还有 lzma).

此文将介绍如何使用lzma, 一个有着更高压缩率和压缩速度的软 件

1.使用lzma -c压缩输入的文本文件

$ lzma  -c –stdout  sample.txt  >sample.lzma

2.使用选项 -d解压lzma文件

$ lzma -d –stdout sample.lzma >sample.txt

比较bzip2 和 lzma 两款压缩工具

为了更加了解lzma的效率如何, 我们来分别使用lzma和bzip2压缩/解压一个 1MB 的文本文件(sample.txt ),然后比较一下结果如何. 此项测试使用的机器的RAM为1GB,CPU为Pentium 4.

ample.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 bytes.

使用bunzip2来解压压缩后的文件.

同样不带任何参数使用bunzip2 来解压文件.

$ bunzip2  sample.txt.bz2

real    0m0.232s
user    0m0.128s
sys     0m0.020s

使用lzma压缩sample.txt

现在,我们来使用lzma结合以下参数压缩sample.txt:

* -c 压缩
* –stdout 在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 bytes, 看来确实比bzip2高效. 同时如上所示, lzma的CPU时间使用确实比bzip2低.

使用lzma解压sample.txt文件

结合以下参数来解压*.lzma文件 :

* -d 解压
* –stdout 在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个不同的压缩比率等级.
* -9 是最高的压缩比率, 当然会需要较多的系统资源与时间,这个比率不适用于解压缩.
* -1 是最低的压缩比率,执行时相对快点.

如下所示使用低比率压缩文件:

$ 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.

此文由阿泉译自 http://www.thegeekstuff.com/2010/06/lzma-better-compression-than-bzip2-on-unix-linux/

本文来自: 阿泉博客 转载请注明地址: http://www.ciux.org/?p=526