Linux常见的压缩文件的扩展名(虽然扩展名在Linux中没有实际作用)与压缩工具的对应关系:
*.Z compress程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.gz gzip程序压缩的文件
*.tar tar程序打包的文件,并没有压缩过
*.tar.gz tar程序打包的文件,并且经过gzip压缩
常见的压缩命令:
compress:compress[-dcr] 文件或目录名
-d:用来解压缩
-r:连同目录下的文件也同时给于压缩
-c:将压缩数据输出成为standard output(输出到屏幕)
例如:compress man.config #原来的文件man.config将会被man.config.Z代替,压缩后只剩下man.config.Z
解压缩:compress -d man.config.Z #也可以用uncompress来解压缩。
如果压缩后要保留原文件:compress -c man.config >man.config.back.Z 那么压缩后将生成一个man.config.back.Z的文件
compress使用的频率越来越低(有些Linux系统已经将compress拿掉了,如果想玩玩,要自己安装)。
gzip,zcat:
gzip [-cdt#] 文件名
zcat 文件名.gz
-c:将压缩的数据输出到屏幕
-d:解压缩的参数
-t:可以用来检验一个压缩的一致性
-#:压缩等级,-1最快,但是压缩比最差,-9最慢,但压缩比最好,default是-6
例如:gzip man.config #压缩man.config,此时man.config会变成man.config.gz
zcat man.config.gz #查看man.config.gz解压之后的内容
gzip -d man.config.gz #解压man.config.gz
gzip -9 -c man.config > man.config.gz #用最佳的压缩比压缩man.config,并保留原文件。
gzip主要想用来取代compress,所以compress的压缩文件可以使用gzip来解开,同时zcat也可以读取compress压缩的文件
bzip2,bzcat:
bzip2 [-cdz] 文件名
bzcat 文件名.bz2
-c:将压缩的数据输出到屏幕
-d:解压缩的参数
-z:压缩的参数
-#:压缩等级,-1最快,但是压缩比最差,-9最慢,但压缩比最好
例如:bzip2 -z man.config #压缩man.config,此时man.config会变成man.config.bz2
bzcat man.config.bz2 #屏幕上会显示man.config.bz2解压后的内容
bzip2 -d man.config.bz2 #解压man.config.bz2
bzip2 -9 -c man.config > man.config.bz2 #用最佳压缩比压缩man.config,并且保留原文件。
当文件名为 *.bz, *.bz2, *.tbz, *.tbz2等,可以尝试使用bzip2来解压,可以使用bunzip2来代替bzip2 -d。
tar:
tar [-cxtzjvfpPN] 文件或目录名
-c:建立一个压缩文档(create的意思)
-x:解开一个压缩文档
-t:查看tarfile文档的内容。
注意:c/x/t不可同时存在,因为不可能同时压缩与解压
-z:是否同时具有gzip的属性,即是否需要用gzip压缩
-j:是否同时具有bzip2的属性,即是否需要用bzip2压缩
-v:压缩的过程中显示档案
-f:使用文件名,在f之后要立即接文件名,不要再加任何参数
-p:使用原文件的属性
-P:可以使用绝对路径来压缩
-N:比后面接的日期(yyyy/mm/dd)还要新的才会被打包进来
--exclude FILE:在压缩过程中,不要将FILE打包
例如:tar -cvf /tmp/etc.tar /etc #将整个/etc目录下的档案全部打包成/tmp/etc.tar,仅打包,不压缩。
tar -zcvf /tmp/etc.tar.gz /etc #将整个/etc目录下的档案全部打包后,以gzip压缩。
tar -jcvf /tmp/etc.tar.bz2 /etc #将整个/etc目录下的档案全部打包后,以bzip2压缩。
注意参数f之后的文件名是自己取的,习惯上都用.tar来做识别
如果加z参数,则以.tar.gz或.tgz来代表gzip压缩过的tar文件
如果加j参数,则以.tar.bz2
tar -ztvf /tmp/etc.tar.gz #查看/tmp/etc.tar.gz文件的内容,由于使用gzip压缩,所以要加z这个参数。
cd /usr/local/src
tar -zxvf /tmp/etc.tar.gz #将/tmp/etc.tar.gz解压缩到/usr/local/src目录下,先进入/usr/local/src目录,然后解压
tar -zxvf /tmp/etc.tar.gz etc/passwd #仅解压/tmp/etc.tar.gz内的etc/passwd这个文件
tarfile与tarball:tarball就是经过tar打包后再压缩的文件,tarfile仅打包没压缩。
还可以分别调用压缩指令(gzip,bzip2)和tar来将一个tarball解开。例如:一个testing.tar.gz的文件,可以这么解开:
gzip -d testing.tar.gz #先解压缩
tar -xvf testing.tar
老的Unix系统可以这么玩,因为老系统gzip没有被整合到tar里面。
dd:
可以用来备份这个分区(partition)
cpio:
适用于备份。