TAR,GZIP, BZIP2, XZ对比
2011-10-30 13:02
225 查看
原文地址: http://hi.baidu.com/mudgao/blog/item/48746b3f8cd2d6d87c1e7139.html
此文只是大致看了一点,尚没有全部看完,发现其中也有一些错误,不过整个文章的内容还是不错的,先转过来,后续仔细看,然后再加工。
1.Tar仅仅只是一个打包工具,并不负责压缩
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩, 压缩是由gzip与bzip2来实现的。因此把*.tar*、.tar.gz、*.tar.bz2 放到一起来举例:
比如我们要把目录/home/www下的test目录打包压缩到当前目录
tar zcvf test.tar test//仅打包,不压缩
tar zcvf test.tar.gz test //打包后以gzip压缩
tar jcvf test.tar.bz2 test // 打包后以bzip2压缩
ll test.tar* // 对比压缩后文件大小
-rw-r–r– 1 Lee mock 10240 01-18 17:05 test.tar
-rw-r–r– 1 Lee mock 357 01-18 17:06 test.tar.bz2
-rw-r–r– 1 Lee mock 327 01-18 17:05 test.tar.gz
如何解压缩包:
tar zxvf test.tar
tar zxvf test.tar.gz
tar zxvf test.tar.bz2
选项:
-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
-O 将文件解开到标准输出
-v 处理过程中输出相关信息 //如果使用,解压和压缩过程中,会显示详细信息,不用则是静默化
-f 对普通文件操作
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩
上面测试中,每次要删除解压后的test文件后解压打其他目录,因为如果不定义解压后目录路径和名字则默认解压到当前目录并以把压缩包名称作为文件夹名字。如果要解压到其他目录(如:/var/tmp/find)则如下:
tar zxvf test.tar.bz2 -C /var/tmp/find
注意:C要大写
关于tar.gz和tar.bz2压缩率的问题:
*.tar.gz 在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。也会被简写成tgz。
*.tar.bz2网上好的资料说这种压缩格式是压缩率最好的、它比前面的方式要占用更多的CPU与时间。但是经过上面的试验显示发现test.tar.gz的大小竟然比test.tar.bz2的更小
2.Gzip的压缩速度是最快的!
压缩gz格式速度最快,也是UNIX/BSD的常用格式,压缩bz2格式时间稍长一些,但似乎在好机器上还可以接受,xz格式的压缩效果确实不错,cvs.tar是打包的全部OpenBSD CVS库,原本大小有5G多,经过xz压缩后只有700多M,不得不说压缩算法确实强悍,不过压缩时间太长——在我的1300MHz主频的老机器上,将 5G多的cvs打包文件压缩成xz格式用了两个小时左右,看来这种格式最好不作为日常采用的格式,但是如果作为放在服务器上供长期、大量下载的资源,使用这种压缩格式来进行压缩和解压尚可理解。
很多情况下,bzip2压缩率并不比gz高,但一般情况下,它花的时间却远远大于gz;
# ls -la
total 14202000
drwxr-xr-x 3 root wheel 512 Mar 25 21:18 .
drwxr-xr-x 15 root wheel 512 Mar 25 16:35 ..
drwxr-xr-x 10 root wheel 512 Mar 25 17:49 cvs
-rw-r--r-- 1 root wheel 387 Mar 25 16:40 cvs-supfile
-rw-r--r-- 1 root wheel 5208381440 Mar 25 21:18 cvs.tar
-rw-r--r-- 1 root wheel 898476333 Mar 25 21:03 cvs.tar.bz2
-rw-r--r-- 1 root wheel 1162675369 Mar 25 21:13 cvs.tar.gz
# xz -z cvs.tar
# ls -la
total 5467600
drwxr-xr-x 3 root wheel 512 Mar 25 22:32 .
drwxr-xr-x 15 root wheel 512 Mar 25 16:35 ..
drwxr-xr-x 10 root wheel 512 Mar 25 17:49 cvs
-rw-r--r-- 1 root wheel 387 Mar 25 16:40 cvs-supfile
-rw-r--r-- 1 root wheel 898476333 Mar 25 21:03 cvs.tar.bz2
-rw-r--r-- 1 root wheel 1162675369 Mar 25 21:13 cvs.tar.gz
-rw-r--r-- 1 root wheel 737463196 Mar 25 21:18 cvs.tar.xz
3.Linux下.bz2与.gz文件的区别
.bz2和.gz都是linux下压缩文件的格式,有点类似windows下的.zip和.rar文件。
.bz2和.gz的区别在于,前者比后者压缩率更高,后者比前者花费更少的时间。也就是说同一个文件,压缩后,.bz2文件比.gz文件更小,但是.bz2文件的小是以花费更多的时间为代价的。
压缩实例:对一个599M的文件夹workspace进行压缩
bz2文件
time tar -jcvf j.tar.bz2 workspace/
340M 56.8%
real 13m20.975s
user 11m13.872s
sys 0m5.985s
gz文件
time tar -zcvf z.tar.gz workspace/
348M 58.1%
real 2m10.305s
user 0m54.228s
sys 0m7.399s
总结:压缩后,.bz2文件只比.gz文件小了8M,但却花费了后者6倍多的时间。当然,压缩的比率,时间跟被压缩文件的格式,大小等因素有关。所以,本例不能说明使用gz比使用bz2更划算,但至少可以证明bz2比gz压缩率更高,gz比bz2花费更少的时间。
4.继续測試一下 gzip, bzip 與 xz
http://blog.s10g.tw/2011/03/01/compare-of-gzip-bzip2-xz/
被壓縮檔是 ubuntu-10.10-desktop-i386.iso,大小為694MB(726827008 bytes)。
第一次測試,單純測試時間,指定參數全部相同為‘-c ubuntu-10.10-desktop-i386.iso > /dev/null’。
第二次測試,主要紀錄壓縮檔大小,指定參數均為‘-c ubuntu-10.10-desktop-i386.iso > u1010.iso.gz’
?
測試的script
第一次:
第二次:
显而易见,GNU本家的东西一定都是最好的。
此文只是大致看了一点,尚没有全部看完,发现其中也有一些错误,不过整个文章的内容还是不错的,先转过来,后续仔细看,然后再加工。
1.Tar仅仅只是一个打包工具,并不负责压缩
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩, 压缩是由gzip与bzip2来实现的。因此把*.tar*、.tar.gz、*.tar.bz2 放到一起来举例:
比如我们要把目录/home/www下的test目录打包压缩到当前目录
tar zcvf test.tar test//仅打包,不压缩
tar zcvf test.tar.gz test //打包后以gzip压缩
tar jcvf test.tar.bz2 test // 打包后以bzip2压缩
ll test.tar* // 对比压缩后文件大小
-rw-r–r– 1 Lee mock 10240 01-18 17:05 test.tar
-rw-r–r– 1 Lee mock 357 01-18 17:06 test.tar.bz2
-rw-r–r– 1 Lee mock 327 01-18 17:05 test.tar.gz
如何解压缩包:
tar zxvf test.tar
tar zxvf test.tar.gz
tar zxvf test.tar.bz2
选项:
-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
-O 将文件解开到标准输出
-v 处理过程中输出相关信息 //如果使用,解压和压缩过程中,会显示详细信息,不用则是静默化
-f 对普通文件操作
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩
上面测试中,每次要删除解压后的test文件后解压打其他目录,因为如果不定义解压后目录路径和名字则默认解压到当前目录并以把压缩包名称作为文件夹名字。如果要解压到其他目录(如:/var/tmp/find)则如下:
tar zxvf test.tar.bz2 -C /var/tmp/find
注意:C要大写
关于tar.gz和tar.bz2压缩率的问题:
*.tar.gz 在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。也会被简写成tgz。
*.tar.bz2网上好的资料说这种压缩格式是压缩率最好的、它比前面的方式要占用更多的CPU与时间。但是经过上面的试验显示发现test.tar.gz的大小竟然比test.tar.bz2的更小
2.Gzip的压缩速度是最快的!
压缩gz格式速度最快,也是UNIX/BSD的常用格式,压缩bz2格式时间稍长一些,但似乎在好机器上还可以接受,xz格式的压缩效果确实不错,cvs.tar是打包的全部OpenBSD CVS库,原本大小有5G多,经过xz压缩后只有700多M,不得不说压缩算法确实强悍,不过压缩时间太长——在我的1300MHz主频的老机器上,将 5G多的cvs打包文件压缩成xz格式用了两个小时左右,看来这种格式最好不作为日常采用的格式,但是如果作为放在服务器上供长期、大量下载的资源,使用这种压缩格式来进行压缩和解压尚可理解。
很多情况下,bzip2压缩率并不比gz高,但一般情况下,它花的时间却远远大于gz;
# ls -la
total 14202000
drwxr-xr-x 3 root wheel 512 Mar 25 21:18 .
drwxr-xr-x 15 root wheel 512 Mar 25 16:35 ..
drwxr-xr-x 10 root wheel 512 Mar 25 17:49 cvs
-rw-r--r-- 1 root wheel 387 Mar 25 16:40 cvs-supfile
-rw-r--r-- 1 root wheel 5208381440 Mar 25 21:18 cvs.tar
-rw-r--r-- 1 root wheel 898476333 Mar 25 21:03 cvs.tar.bz2
-rw-r--r-- 1 root wheel 1162675369 Mar 25 21:13 cvs.tar.gz
# xz -z cvs.tar
# ls -la
total 5467600
drwxr-xr-x 3 root wheel 512 Mar 25 22:32 .
drwxr-xr-x 15 root wheel 512 Mar 25 16:35 ..
drwxr-xr-x 10 root wheel 512 Mar 25 17:49 cvs
-rw-r--r-- 1 root wheel 387 Mar 25 16:40 cvs-supfile
-rw-r--r-- 1 root wheel 898476333 Mar 25 21:03 cvs.tar.bz2
-rw-r--r-- 1 root wheel 1162675369 Mar 25 21:13 cvs.tar.gz
-rw-r--r-- 1 root wheel 737463196 Mar 25 21:18 cvs.tar.xz
3.Linux下.bz2与.gz文件的区别
.bz2和.gz都是linux下压缩文件的格式,有点类似windows下的.zip和.rar文件。
.bz2和.gz的区别在于,前者比后者压缩率更高,后者比前者花费更少的时间。也就是说同一个文件,压缩后,.bz2文件比.gz文件更小,但是.bz2文件的小是以花费更多的时间为代价的。
压缩实例:对一个599M的文件夹workspace进行压缩
bz2文件
time tar -jcvf j.tar.bz2 workspace/
340M 56.8%
real 13m20.975s
user 11m13.872s
sys 0m5.985s
gz文件
time tar -zcvf z.tar.gz workspace/
348M 58.1%
real 2m10.305s
user 0m54.228s
sys 0m7.399s
总结:压缩后,.bz2文件只比.gz文件小了8M,但却花费了后者6倍多的时间。当然,压缩的比率,时间跟被压缩文件的格式,大小等因素有关。所以,本例不能说明使用gz比使用bz2更划算,但至少可以证明bz2比gz压缩率更高,gz比bz2花费更少的时间。
4.继续測試一下 gzip, bzip 與 xz
http://blog.s10g.tw/2011/03/01/compare-of-gzip-bzip2-xz/
被壓縮檔是 ubuntu-10.10-desktop-i386.iso,大小為694MB(726827008 bytes)。
第一次測試,單純測試時間,指定參數全部相同為‘-c ubuntu-10.10-desktop-i386.iso > /dev/null’。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ======== GZIP ======== real 0m44.138s user 0m42.300s sys 0m0.576s ======== BZIP2 ======== real 4m55.145s user 4m53.074s sys 0m0.750s ======== XZ ======== real 7m53.939s user 7m51.902s sys 0m1.436s |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ======== GZIP ======== real 0m44.551s user 0m42.279s sys 0m1.303s 684M(716987381 bytes) u1010.iso.gz ======== BZIP2 ======== real 4m52.963s user 4m50.558s sys 0m1.704s 689M(721999239 bytes) u1010.iso.bz2 ======== XZ ======== real 8m3.213s user 7m57.394s sys 0m2.654s 679M(711776308 bytes) u1010.iso.xz |
第一次:
1 2 3 4 5 6 7 | #!/bin/sh echo======== GZIP ======== timegzip-c ubuntu-10.10-desktop-i386.iso > /dev/null echo======== BZIP2 ======== timebzip2-c ubuntu-10.10-desktop-i386.iso > /dev/null echo======== XZ ======== timexz -c ubuntu-10.10-desktop-i386.iso > /dev/null |
1 2 3 4 5 6 7 8 9 10 | #!/bin/sh echo======== GZIP ======== timegzip-c ubuntu-10.10-desktop-i386.iso > u1010.iso.gz ls-sh u1010.iso.gz echo======== BZIP2 ======== timebzip2-c ubuntu-10.10-desktop-i386.iso > u1010.iso.bz2 ls-sh u1010.iso.bz2 echo======== XZ ======== timexz -c ubuntu-10.10-desktop-i386.iso > u1010.iso.xz ls-sh u1010.iso.xz |
显而易见,GNU本家的东西一定都是最好的。
相关文章推荐
- gzip,bzip2, xz , zip ,unzip ,解压,压缩;tar打包,解压。
- centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar 第九节课
- 9. 文件系统——文件的压缩、解压缩、归档及底层复制命令(gzip bzip2 xz tar dd)
- gzip、bzip2、xz、tar、zip压缩、归档详解
- Linux CentOS 7 中打包压缩工具gzip、bzip2、xz、zip、tar
- 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
- Linux系统文件的网络传输、归档tar、压缩zip、gzip、bzip2、xz、gz、bz2
- find gzip bzip2 xz tar
- gzip,zip,bzip2,xz,tar文件压缩和归档
- 压缩 和归档 gzip bzip2 xz zip tar
- 压缩工具gzip,bzip2,xz,zip,tar
- linux-压缩,解压,归档,gzip,bzip2,xz,zip,tar,while
- tar,bzip2,gzip,xz
- gzip、bzip2、zip&unzip、xz、tar
- zip bzip2 gzip xz tar文件解压缩
- Linux精讲——打包和压缩tar、gzip、bzip2、xz、zip
- linux笔记 文件的压缩与解压缩gzip、bzip2、xz、zip&unzip、tar打包、tar打包和压缩并用
- Linux--打包&压缩 tar,gzip,bzip2
- tar、zip、gzip、bzip2等命令的常见用法
- Compress、tar、gzip、zcat、bzip2、bzcat、打包解压命令行