对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的 压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些 常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕。
在具体总结各类压缩文件之前呢,首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压 缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就 得先借助另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。
ZIP
zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。闲话少说,我们步入正题吧:
linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。常用命令选项:
-d 从压缩文件内删除指定的文件,要解压到指定目录需要在目录前指定-d。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件
-v 显示指令执行过程或显示版本信息。
-i<范本样式> 只压缩符合条件的文件。
-x<范本样式> 压缩时排除符合条件的文件。
-n <字尾字符串> 不压缩具有特定字尾字符串的文件。
-<压缩效率> 压缩效率是一个介于1-9的 数值。
举例:
zip -r mydata.zip mydata //将mydata目录压缩为mydata.zip unzip mydata.zip -d mydatabak //将mydata.zip解压到mydatabak目录,注意要-d unzip mydata.zip //将mydata.zip解压到当前mydata目录 unzip dsw\*.zip //将dsw目录下的所有zip文件解压到dsw目录下
unzip -v wwwroot.zip //查看wwwroot.zip里面的内容
RAR
要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的,然后安装:
tar -xzpvf rarlinux-3.2.0.tar.gz cd rar make
这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。
rar x vpsyou.rar //解压 vpsyou.rar 到当前目录 rar vpsyou.rar ./vpsyou.com/ //将 vpsyou.com 目录打包为 vpsyou.rar
rar c test.rar //
rar d test.rar file1.txt //从test.rar包中删除file1.txt
rar e test.rar //不能保存当前目录结构,所有文件都在本目录
rar x test.rar //解压出来会保存目录结构
a 添加文件到操作文档
c 对操作文档添加说明注释
d 从文档中删除文件
e 将文件解压到当前目录(所有的文件被解压到当前目录,不能保持压缩前的目录结构,如果想保持压缩前的目录结构,用x解压)
x 带路径解压文档中内容到当前目录
TAR
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。
如何打包:
# tar -cvf archive_name.tar directory_to_compress
如何解包:
# tar -xvf archive_name.tar /tmp/ //后面解压路径为null时,默认解压到当前路径
常用参数:
-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
可以这样记忆,创建新的文件是c,追加在原有文件上用r,从文件中解压出用x
-t 查看内容
-O 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作 //似乎一直都要用f,不然的话,可能会不显示
-j 调用bzip2来压缩归档文件
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
举例:
tar cvf dsw.tar dsw //将dsw文件打包为tar文件
tar czvf dsw.tar.gz dsw //z结合c时,表示将文件打包为tar.gz格式 tar xzvf dsw.tar.gz //z结合x时,表示将文件从.tar.gz包中解压
tar zxvf dsw.tar.gz -C builds //指定解压dsw到builds目录,注意需要-C
tar zcvfp back.tar.gz ./new //打包new目录下所有文件,并保留其原有属性 tar -zcvf file.tar.gz ./new/ --exclude ./new/tmp //打包new目录下除tmp之外的所有文件夹
TAR.GZ TAR.Z TAR.BZ2
tar.gz这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。与gzip相对的解压程序是gunzip
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多,Z结尾的文件就是bzip2压缩的结果.与 compress相对的解压程序是uncompress ,tar中使用-Z这个参数来调用compress。
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果,这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。与bzip2相对的解压程序是bunzip2,tar中使用-j这个参数来调用gzip
注意:请注意z和Z与tar中c(归档),x(解压)配合使用
z + c = 将文件打包并使用gzip压缩为tar.gz
z + x = 将压缩包使用gzip将包解压
Z + c = 将文件打包并使用compress压缩为tar.Z
Z + x = 将压缩包使用compress解压
j + c = 将文件打包并使用bzip2压缩为tar.bz2
j + x = 将压缩包使用gzip将包解压
解压缩:
tar -cZf all.tar.Z *.jpg //将所有.jpg文件打成tar包,并且其用compress压缩 tar -xZf all.tar.Z //将上面打的包解开 上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径: tar -zxvf archive_name.tar.gz -C /tmp/extract_here/
tar -cjf all.tar.bz2 *.jpg //将所有.jpg文件打包成tar包,并且使用bzip2压缩
tar -xjf all.tar.bz2 //将上面打的包解压
上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:
tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/