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/
转载于:https://blog.51cto.com/wrchiu/331986