Linux 下创建与解压zip , tar , tar .gz 和tar .bz2 文件 及该文件 压缩 对比
刚在qq 群里面一位仁兄问到文件 压缩 的命令,平时工作中大多用解压缩 命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux 下创建与解压zip 、tar 、tar.gz 和tar.bz2 文件及他们之间压缩率 对比,在自己的脑袋内存空间有限又不经常使用的时候以便于备忘。现整理如下:
目前Linux 下常见的压缩文件扩展名:
*.Z compress 程序压缩的文件(最早期使用), 压缩后取代源文件; *.zip 一个夸平台的文件打包程序,适用于Linux 、windows 和Mac OS 系统; *.bz2 bzip2 程序压缩的文件; *.gz gzip 程序压缩的文件; *.tar tar 程序打包的文件,并没有压缩; *.tar.gz tar 程序打包的文件,并经过gzip 程序的压缩; *.tar.bz2 tar 程序打包的文件,并经过bzip2 程序压缩。
Tips : 所谓扩展名只是大家约定的通用格式 ,是为了更方便的能一眼识别出是什么压缩类型,当然你可以打包或压缩为任意格式 的后缀名,只要你愿意。
A )*.zip 格式是大家最常见的一种,它具有夸操作系统平台性,可以同时在windows 、Linux 和Mac Os 上使用。
大家可以用zip 格式压缩那些需要共享给windows 用户的文件。压缩与解压.ZIP 格式的文件:
[Lee@leedd.Com tmp]$ zip -r test.zip tmp adding: test/ (stored 0%) adding: test/data-file (deflated 24%) adding: test/r (deflated 51%)
下面是如果解压一个zip 文档:
[Lee@leedd.Com tmp]$ rm -rf test # 为测试解压,先删除当前目录下的tmp 文件 [Lee@leedd.Com tmp]$ unzip test.zip Archive: test.zip creating: test/ inflating: test/data-file inflating: test/r
B) 压缩与解压*.tar* 、.tar.gz 、*.tar.bz2 格式的文件及对比:
Tar 是在Linux 中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU 以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩, 压缩是由gzip 与bzip2 来实现的。因此把*.tar* 、.tar.gz 、*.tar.bz2 放到一起来举例:
比如我们要把目录/var/tmp 下的test 目录打包压缩 到当前目录
[Lee@leedd tmp]$ tar -cvf test.tar test ### 仅打包,不压缩 [Lee@leedd tmp]$ tar -zcvf test.tar.gz test ### 打包后以gzip 压缩 [Lee@leedd tmp]$ tar -jcvf test.tar.bz2 test ### 打包后以bzip2 压缩 [Lee@leedd tmp]$ 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
如何解压缩包:
[Lee@leedd tmp]$ tar -xvf test.tar [Lee@leedd tmp]$ tar -xvf test.tar.gz [Lee@leedd tmp]$ tar -jxvf test.tar.bz2
上面测试 中,每次要删除解压后的test 文件后解压打其他目录,因为如果不定义解压后目录路径和名字则默认解压到当前目录并以把压缩包名称作为文件夹名字。如果要解压到其他目录(如:/var/tmp/find )则如下:
[Lee@leedd tmp]$ tar -jxvf test.tar.bz2 -C /var/tmp/find
关于 tar.gz 和 tar.bz2 压缩率 的问题:
*.tar.gz 在压缩时不会占用太多CPU 的,而且可以得到一个非常理想的压缩率。也会被简写成tgz 。
*.tar.bz2 网上好的资料说这种压缩格式是压缩率最好的、它比前面的方式要占用更多的CPU 与时间。但是经过上面的试验显示发现test.tar.gz 的大小竟然比test.tar.bz2 的更小(这是否意味者*.tar.gz 拥有更小的压缩率? 至少这次实验是这样)