对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.tar、.gz、.tar.gz、.gz、bz2、.tar.bz2、.Z、.tar.Z等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使
用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕:)
在具体总结各类压缩文件之前,首先要
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这
两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件先打
成一个包,然后再就原来的压缩程序进行压缩。Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:
【主选项】:
c
创建新的档案文件。如果你想备份一个目录或是一些文件,就要选择这个选项。
r
把要存档的文件追加到档案文件的末尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容,查看已经备份了哪些文件。
u
更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x
从档案文件中释放文件。不管tar文件在什么地方,都只会解包到当前目录。特别注意,在主选项参数中,
c/x/t
仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
【辅助选项】:
v
详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
f 使用档案文件或设备,这个选项通常是必选的。请留意,在 f
之后要立即接档名喔!不要再加参数!例如使用" tar -zcvfP tfile
sfile"就是错误的写法,要写成" tar -zcvPf
tfile sfile"。
z :是否同时具有
gzip的属性?亦即是否需要用 gzip 压缩?
j :是否同时具有 bzip2 的属性?亦即是否需要用
bzip2 压缩?
Z :是否同时具有 compress 的属性?亦即是否需要用 compress 压缩?(以下几个辅助参数未经实验确认证实)
k
保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
b
该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512
bytes)。
w 每一步都要求确认。
p :使用原文件的原来属性(属性不会依据使用者而变)
P :可以使用绝对路径来压缩!
-exclude FILE:在压缩的过程中,不要将 FILE 打包!
例1:将build文件夹打包,并且显示详细的打包文件列表
# tar -cvf build.tar build
例2:将build文件夹打包后,放到/home底下
# tar -cvf /home/build.tar build
例3:查看/home/build.tar里头的详细内容
# tar -tvf /home/build.tar
例4:将111.txt追加到build.tar里头
# tar -rvf build.tar 111.txt
例5:解包到当前目录
# tar -xvf build.tar
例6:从111.tar包中获取单个333.txt文件,并且放入当前目录
# tar -xvf 111.tar 333.txt
(以下几个操作没有实验验证,粘贴到此作为参考)
例7:用户在/dev/fd0设备的软盘中创建一个备份文件,并将/home
目录中所有的文件都拷贝到备份文件中。
# tar -cf /dev/fd0 /home
要恢复设备磁盘中的文件,可使用xf选项:
# tar -xf /dev/fd0
如果用户备份的文件大小超过设备可用的存贮空间,如软盘,您可以创建一个多卷的tar备份文件。M选项指示tar命令提示您使用一个新的存贮
设备,当使用M选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样您就可以把tar档案存入几张磁
盘中。
# tar -cMf /dev/fd0 /home
要恢复几张盘中的档案,只要将第一张放入软驱,然后输入有x和M选项的tar命令。在必要时您会被提醒放入另外一张软盘。
# tar -xMf /dev/fd0
好了,完成了打包工作以后,就是要压缩tar文件了。下面我们详细的介绍几种压缩的命令
=========================================================
gzip命令:
gzip应该说是我们最常见到的压缩命令,解压缩是gunzip命令。经过gzip命令压缩后的文件就是以.gz结尾的。如果是对tar包压缩,则一般用.tar.gz结尾,有的甚至简写成tgz.
语法:gzip [选项] 压缩(或解压缩四)的文件名
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l
对每个压缩文件,显示下列字段:压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num
用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
例1:对所有文件进行压缩
# ls
sslcd ssl-script
# gzip *
# ls
sslcd.gz ssl-script.gz
例2:解压缩文件
# gzip -dv sslcd.gz
sslcd.gz: 66.8% -- replaced with sslcd
例3:详细显示选中的压缩文件的信息,并不解压
# gzip -l ssl-script
compressed uncompressed ratio uncompressed_name
1818 3890 54.0% ssl-script
例4:一般情况下,我们都是tar命令和gzip命令一起使用,只需要在tar命令上多加一个-z参数,即-czvf、-tzvf、-xzvf等
对build文件目录进行打包并压缩
# tar -cvzf build.tar.gz build
=============================================================
bzip2命令:
bzip2命令是一个压缩能力更强的压缩程序,解压缩命令是bunzip2。而.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用bzip2。
c或--stdout 将压缩与解压缩的结果送到标准输出。
d或--decompress 执行解压缩。
f或--force
bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。
k或--keep
bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
s或--small 降低程序执行时内存的使用量。
t或--test 测试.bz2压缩文件的完整性。
v或--verbose 压缩或解压缩文件时,显示详细的信息。
z或--compress 强制执行压缩。
例1:压缩所有文件
# bzip2 *
例2:解压缩所有文件
# bzip2 -dv *
例3:查看压缩包,并不解压缩
# bzip2 -tv ssl-script.bz2
例4:用tar命令调用bzip2命令,只需要在tar命令上多加一个-j参数,即-cjvf、-tjvf、-xjvf等
# tar -cjvf build.tar.bz build
===============================================================
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z(Z大写的)结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用compress。下面来举例说明一下:
例1:这条命令是将所有.jpg的文件打成一个tar包,并且调用compress压缩,包名为all.tar.Z
# tar -cZf all.tar.Z *.jpg
例2:这条命令是将上面产生的包解开
# tar -xZf all.tar.Z
==============================================================
有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结:
1)对于.tar结尾的文件
tar -xf all.tar
2)对于.gz结尾的文件
gzip -d all.gz或
gunzip all.gz
3)对于.tgz或.tar.gz结尾的文件
tar -xzf all.tar.gz
tar -xzf all.tgz
4)对于.bz2结尾的文件
bzip2 -d all.bz2或
bunzip2 all.bz2
5)对于tar.bz2结尾的文件
tar -xjf all.tar.bz2
6)对于.Z结尾的文件
uncompress all.Z
7)对于.tar.Z结尾的文件
tar -xZf all.tar.z
===================以下命令未经实验验证,粘贴在此,作为参考
另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:
1)对于.zip
linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法
# zip all.zip *.jpg
这条命令是将所有.jpg的文件压缩成一个zip包
注意:如果要压缩的是个文件夹,则要加上-r参数,表示调用递归压缩,如:
zip -r temp.zip temp
# unzip all.zip
这条命令是将all.zip中的所有文件解压出来
2)对于.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 a all *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar
扩展名将自动附加到包名后。
# unrar e all.rar
这条命令是将all.rar中的所有文件解压出来
=====================================================
到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、
zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.
Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方
法对于Unix也基本有效。