|
前些天首次看到某个常用的软件包开始使用 .xz 文件格式发布,故有此讨论。
具体软件包名字忘了。coreutils 见第11贴 http://www.linuxsir.cn/bbs/post1989997-11.html
gzip bzip2 太常用,不多言。
lzma utils:
http://tukaani.org/lzma/
http://tukaani.org/lzma/benchmarks A Quick Benchmark: Gzip vs. Bzip2 vs. LZMA
xz utils:
http://tukaani.org/xz/
http://tukaani.org/xz/xz-file-format.txt
5.3. Filters
5.3.1. LZMA2
LZMA (Lempel-Ziv-Markov chain-Algorithm) is a general-purporse
compression algorithm with high compression ratio and fast
decompression. LZMA is based on LZ77 and range coding
algorithms.
LZMA2 is an extensions on top of the original LZMA. LZMA2 uses
LZMA internally, but adds support for flushing the encoder,
uncompressed chunks, eases stateful decoder implementations,
and improves support for multithreading. Thus, the plain LZMA
will not be supported in this file format. 7z:
http://www.7-zip.org/
lzma 算法能提供大压缩比早有耳闻,且很多软件包提供 lzma 文件格式的发布。
中文说明 http://zh.wikipedia.org/wiki/LZMA
个人完全是因为懒惰,才一直没给自己的系统添加 lzma 支持,毕竟 gzip bzip2 能满足需要,最多只是浪费些时间、空间。
[color="Silver"]懒人不喜欢 "tar --lzma -cvf xxx.tar.lzma *" 形式的命令。可以使用 tar 的 a 参数,见30帖 http://www.linuxsir.cn/bbs/post1993536-30.html
看到开头提到的有软件包开始使用 .xz 格式发布,决定试一试。
前面给出的资料指出 xz utils 是 lzma utils 的下一代,从版本号变化 可理解为:
给 lzma utils 改名 xz utils,
并给出新的 *.xz 文件格式,
仍支持老的 *.lzma 文件格式,但 *.xz *.lzma 并不兼容。
前面给出资料有 gzip bzip2 lzma 比较。
xz utils 到目前还未发布稳定版,beta 测试中。
下面测试使用的是 http://tukaani.org/xz/xz-4.999.8beta.tar.gz,测试资源即此软件包编译后打包的 tar 文件(包括源代码文本及编译产生的二进制文件)。
- $ #测试资源
- $ ls -gG xz-4.999.8beta.tar
- -rw-r--r-- 1 9768960 05-21 21:41 xz-4.999.8beta.tar
- $
- $ #xz 测试
- $ time xz -z -9 xz-4.999.8beta.tar
- real 0m14.526s
- user 0m14.241s
- sys 0m0.204s
- $
- $ ls -gG xz-4.999.8beta.tar.xz
- -rw-r--r-- 1 1003400 05-21 21:41 xz-4.999.8beta.tar.xz
- $
- $ time xz -d xz-4.999.8beta.tar.xz
- real 0m0.408s
- user 0m0.368s
- sys 0m0.024s
- $
- $ #bzip2 测试
- $ time bzip2 -9 xz-4.999.8beta.tar
- real 0m6.726s
- user 0m6.684s
- sys 0m0.028s
- $
- $ ls -gG xz-4.999.8beta.tar.bz2
- -rw-r--r-- 1 2049894 05-21 21:41 xz-4.999.8beta.tar.bz2
- $
- $ time bzip2 -d xz-4.999.8beta.tar.bz2
- real 0m1.342s
- user 0m1.296s
- sys 0m0.044s
- $
- $ #gzip 测试
- $ time gzip -9 xz-4.999.8beta.tar
- real 0m5.129s
- user 0m5.116s
- sys 0m0.008s
- $
- $ ls -gG xz-4.999.8beta.tar.gz
- -rw-r--r-- 1 2691895 05-21 21:41 xz-4.999.8beta.tar.gz
- $
- $ time gzip -d xz-4.999.8beta.tar.gz
- real 0m0.287s
- user 0m0.212s
- sys 0m0.044s
复制代码 xz utils 与 lzma utils 补充测试 见第24贴 http://www.linuxsir.cn/bbs/post1990794-24.html
测试大体表明:
使用最大压缩率,
压缩时 xz utils 耗时比 bzip2 长一倍,
压缩时 xz utils 耗时是 lzma utils 一半,
压缩时 xz utils 生成文件体积是 bzip2 的一半,
压缩时 xz utils 生成文件体积比 lzma utils 略大,
解压时 xz utils 耗时是 bzip2 的三分之一,
解压时 xz utils 速度比 lzma utils 略快,
解压时 xz utils 耗时仅比 gzip 多一倍。
压缩时 xz utils 使用 *.xz 格式 生成文件 比 *.lzma 格式 略大,
测试样本较小,多次测试结果有出入,无法判断 xz utils 使用 *.xz 与 *.lzma 格式 压缩与解压时间 谁占优势。
到目前为止,lzma utils 的压缩率仍是最大的,xz utils 解压时间占优势。
在不介意压缩时间的环境,lzma utils 稳定版 值得使用。
想得到压缩时间 与 压缩体积 的平衡,xz utils 值得使用。
保持 xz utils 与 lzma utils 最大的兼容性,*.lzma 格式仍是首选。
如果您像偶一样希望使用稳定版,可以等 xz utils 第一个稳定版现身,或使用 lzma utils 的最后一个稳定版先。
另,请跟踪 xz utils 邮件列表 见第18贴 http://www.linuxsir.cn/bbs/post1990575-18.html
7z 相对来说,更像一个瑞士军刀,支持几乎所有压缩文件格式(当前好像不支持 *.xz),并且整合了 unrar,使用混合的许可协议,个人恶之。
tar xz 配合使用 见第16贴 http://www.linuxsir.cn/bbs/post1990115-16.html
file man texinfo 可用补丁 见第15贴 http://www.linuxsir.cn/bbs/post1990109-15.html
通用打包工具图形前端 见第4贴 http://www.linuxsir.cn/bbs/post1989856-4.html |
|