习惯了linux源码都是有tar.gz格式的,今天下载glib源码的时候发现只有tar.xz格式的。
原本以为只是后缀有变化,没在意直接tar xzvf解压,却发现报错,错误警告如下:
[/home/svn/code_test]#tar xzvf glib-2.32.3.tar.xz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
[/home/svn/code_test]#
看来xz是个新的没摸过的压缩格式,网上搜了一下相关资料。
记录一下,以免以后又忘记了要重新在网上搜。
以下##号中的概述内容出自:http://bbs.chinaunix.net/thread-3610738-1-1.html
###########################################################
现在很多找到的软件都是tar.xz的格式的,xz 是一个使用 LZMA压缩算法的无损数据压缩文件格式。 和gzip与bzip2一样,同样支持多文件压缩,但是约定不能将多于一个的目标文件压缩进同一个档案文件。 相反,xz通常作为一种归档文件自身的压缩格式,例如使用tar或cpioUnix程序创建的归档。 xz 在GNU coreutils(版本 7.1 或更新) 中被使用。 xz 作为压缩软件包被收录在 Fedora (自Fedora 12起) , Arch Linux , FreeBSD、 Slackware Linux、CRUX 和 Funtoo中。
xz utils 是 lzma utils 的下一代lzma utils 改名 xz utils。 压缩时 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 解压时间占优势。 一个 xz 文件格式的实现XZ 实用程序已可在网上自由获得。GNU tar自版本1.22起使用这一软件透明支持xz文件格式(就如同其处理gzip格式或者bzip2格式一样)。 随着大量软件进入了公有领域(例如 liblzma等) 程序的4.999.9beta版本实现在GNU LGPL 和 GNU GPL条款下发布。 |
对于xz格式的个人看法:
关于xz格式,个人总结是压缩的时候比较耗时,但是压缩比比较高,比gzip的压缩比要高出不少。
很多源代码,都是一次打包压缩,无数次下载解压。并且下载的时候需要考虑到文件大小的因素。
估计是基于上述的原因,慢慢的一些源码,采用了xz格式了。
以下以glib-2.32.3的源码为例,直观的显示一下tar.gz和tar.xz格式的压缩比
[/home/svn/code_test]#ll
total 18184
drwxrwxr-x 12 root root 4096 2012-05-15 07:30 glib-2.32.3
-rw-r--r-- 1 root root 12417825 2012-05-31 12:56 glib-2.32.3.tar.gz
-rw-r--r-- 1 root root 6164984 2012-05-31 12:56 glib-2.32.3.tar.xz
[/home/svn/code_test]#ll -h
total 18M
drwxrwxr-x 12 root root 4.0K 2012-05-15 07:30 glib-2.32.3
-rw-r--r-- 1 root root 12M 2012-05-31 12:56 glib-2.32.3.tar.gz
-rw-r--r-- 1 root root 5.9M 2012-05-31 12:56 glib-2.32.3.tar.xz
[/home/svn/code_test]#
可以看出,同样是对glib-2.32.3的压缩打包,tar.xz格式的大小是tag.gz的格式的一半
如何对xz格式的文件进行解压
方法一: 使用xz命令
xz -z 要压缩的文件
如果要保留被压缩的文件加上参数 -k 。
XZ解压文件方法或命令
xz -d 要解压的文件
同样使用 -k 参数来保留被解压缩的文件。
方法二: 使用tar命令自带的参数J
老版tar里面的压缩参数只有z和j, z是针对 gzip,j是针对 bzip2
新版本的tar命令里面,提供了一个J参数来针对xz格式的文件。tar是从哪个版本支持J参数的,没有仔细去调查过,但是fc14中自带的1.23版本的tar命令,是支持xz格式的。
解压文件的命令
tar xJvf XXXX.tar.xz
压缩打包的命令
tar cJvf XXXX