红联Linux门户
Linux帮助

linux下lzma压缩可以达到63倍的压缩率

发布时间:2016-11-26 09:41:52来源:linux网站作者:houzhizhen
原始文件 yarn-houzhizhen-nodemanager-localhost.localdomain.log,大小88234139字节。
 
先用gzip压缩
tar -czf yarn.tar yarn-houzhizhen-nodemanager-localhost.localdomain.log  
 
再用 lzma压缩
tar -c --lzma -f yarn.tar.lzma yarn-houzhizhen-nodemanager-localhost.localdomain.log  
 
然后查看文件大小
-rw-rw-r--. 1 houzhizhen houzhizhen 88234139 11月 26 9:20 yarn-houzhizhen-nodemanager-localhost.localdomain.log  
-rw-rw-r--. 1 houzhizhen houzhizhen  2246112 11月 26 9:21 yarn.tar  
-rw-rw-r--. 1 houzhizhen houzhizhen  1392554 11月 26 9:25 yarn.tar.lzma  
 
lzma的压缩率: 88234139/1392554.0 = 63.36
gzip的压缩率: 88234139.0/2246112 = 39.28
 
附:lzma文件及命令简介
LZMA (Lempel-Ziv-Markov  chain-Algorithm)基于著名的LZ77压缩算法改进的压缩/解压工具,特点:高压缩率,高解压速度,低内存消耗,lzma命令行工具使用方式和gzip,bzip2类似,对已经熟悉gzip,bzip2这类工具的用户来说,上手并不难。
对比两大主流压缩工具:gzip,bzip2:
1,lzma和bzip2在速度上面远远输给gzip,但在压缩率方面,lzma算法占优势。
2,lzma拥有比gzip,bzip2更高的压缩比率,压缩后文件更小,纯文本文件压缩更加明显,在解压方面比bzip2速度快出数倍,对于想要有较高的压缩率,又不想消耗太多内存,lzma是首先。
3,文件属性,lzma压缩和解压缩能保持文件所有人,权限和修改时间等信息,但是gzip不保存这些信息。
速度:bzip2 < lzma < gzip
压缩率:gzip   < bzip2 < lzma
文件信息:gzip 不保留, bzip2 , lzma 保留
这么看来,好像没有太多理由再用 bzip2 了?呵呵,不过bzip2仍是我的最爱,目前还没有办法一下子接受lzma,
虽然lzma很优秀,但我已经习惯了 tar cjvf 和 tar xjvf 了!
lzma在绝大多数Linux和Unix系统中默认安装。
几个主要参数:
-d --decompress --uncompress     
指定解压缩,比如 lzma  -d test.lzma,该命令相当于 unlzma test.lzma
-f --force
强制解压/压缩,忽略一切问题,比如:目标文件已经存在,直接覆盖等。
-h --help
显示帮助
-k --keep
不删除原始文件,
-t --test
测试,不解压
-v --verbose
显示进度等信息,
-z --compress
强制压缩
用法示例:
压缩文件:
lzma  test.tar
压缩后生成:lzma.tar.lzma 并且原文件 test.tar会被删除,要想保留,添加 -k 选项
lzma -k test.tar
解压:
lzma -d test.tar.lzma 或 unlzma test.tar.lzma
解压后 test.tar.lzma默认被删除,如果想保留,添加-k选项,
如果目标文件已经存在,lzma不会覆盖,而报错退出执行,
添加 -f忽略:
lzma -kf test.tar
覆盖已经存在的 lzma.tar.lzma 同时保留原文件 test.tar
解压:
lzma -dkf test.tar.lzma
覆盖已经存在的 test.tar 同时保留 test.tar.lzma
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26338.html