Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比
在Linux系统和服务器中,会非常频繁的用到解压命令。Linux下的压缩格式有zip、tar、和tar.bz2这几种。
目前Linux下 常见的压缩文件扩展名:
*.Z compress程序压缩的文件(最早期使用),压缩后取代源文件;
*.zip 一个夸平台的文件打包程序,适用于Linux、windows和Mac OS系统;
*.bz2 bzip2程序压缩的文件;
*.gz gzip程序压缩的文件;
*.tar tar程序打包的文件,并没有压缩;
*.tar.gz tar程序打包的文件,并经过gzip程序的压缩;
*.tar.bz2 tar程序打包的文件,并经过bzip2程序压缩。
所 谓扩展名只是大家约定的通用格式,是为了更方便的能一眼识别出是什么压缩类型,当然你可以打包或压缩为任意格式的后缀名,只要你愿意。
A)*.zip格式是大家最常见的一种,它具有夸操作系统平台性,可以同时在windows、Linux和Mac Os上使用。
大家可以用zip格式压缩那些需要共享给windows用户的文件。压缩与解压.ZIP格式的文件:
cd /home/www //先进入网站目录的上一级
zip -q -r a.zip a //压缩a目录为a.zip,-q是静默化压缩
解压一个zip文 档:
cd /home/www //进入压缩包所在的目录
unzip -q a.zip //静默化解压www目录下的a.zip文件
这只是zip的一种压缩与解压的方法,也是最简单方便的一种
B) 压缩与解压*.tar*、.tar.gz、*.tar.bz2 格式的文件及对比:
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的更小(这是否意味者*.tar.gz拥有更小的压缩率? 至少这次实验是这样)