一、gzip,bzip2和xz

gzip,bzip2和xz是Linux下常用文件压缩工具,三者在使用风格上比较类似,执行命令如下:

gzip file
bzip2 file
xz file
其中“file”为待压缩文件

用以上三种工具压缩成功后,原文件将被删除,且自动生成带有不同后缀名的文件。

gzip file -->file.gz
bzip2 file -->file.bz2
xz file -->file.xz

若想保留原文件,可用以下命令:

bzip2 -k file
xz -k file

对gzip而,其并无-k选项,故可执行:

gzip -c file > file.gz 
(使用该命令时,输入重定向后的文件应带有.gz后缀名,否则解压时会出现无法解压的问题)

gzip,bzip2和xz对应的解压工具分别是gunzip,bunzip和unxz。用某种工具压缩的文件只能用对应的解压工具进行解压,如用gzip压缩文件A,压缩后的文件只能用gunzip进行解压。使用方法如下:

gunzip file.gz
bunzip2 file.bz2
unxz file.xz
其中“file.*”为待解压文件,*表示gz,bz2或者xz。

ps:以上文件后缀必须对应正确,否则将无法解压。为了便于理解,使用下列脚本说明:

  gzip a.txt #压缩文件a.txt,将生成文件a.txt.gz
  mv a.txt.gz a.txtgz #删除a.txt.gz的后缀名.gz
  gunzip a.txtgz #解压文件a.txtgz
  执行后将提示:gzip: a.txtgz: unknown suffix -- ignored
  
这样,由于后缀名不对将导致压缩失败。

其实,以上解压工具完全可用压缩工具替代,使用-d选项:

gunzip file.gz == gzip -d file.gz
bunzip2 file.bz2 == bzip2 -d file.bz2
unxz file.xz == xz -d file.xz

二、tar

以上三个工具只能对文件压缩,无法压缩目录。

欲压缩目录,则应先对目录完成归档。归档即将多个文件放在一起,归档并不对文件压缩。

常用的归档工具为tar。

tar常用选项如下:

-c:创建归档
-x:展开归档
-f filename:指定归档后文件名称,一般以.tar为后缀
-C:指定展开的位置

tar工具归档成功后,生成后缀名为.tar的文件。

归档后,则可使用gzip,bzip2和xz对目录进行压缩,但这样需连续使用两个命令,比较烦琐,若需简化步骤可使用tar工具,其可调用gzip,bzip2,xz三者中的一者完成解压缩功能:

-z:调用gzip。zc连用表示归档压缩;zx表示解压
-j:调用bzip2。jc连用表示归档压缩;jx表示解压
-J:调用xz。Jc连用表示归档压缩;Jx表示解压

当我们使用源代码编译软件时,常看见后缀名为“.tar.gz”的文件,这其实是一个已归档且用gzip进行压缩的文件,下面来模拟一下其生成及解压:

一、生成

1.假如有三个文件
[root@localhost test]# ls
fstab  passwd  shadow
2.现将其归档,并指定归档后文件名称为sample.tar
[root@localhost test]# tar -cf sample.tar fstab passwd shadow 
3.使用gzip工具对sample.tar进行压缩
[root@localhost test]# gzip sample.tar 
4.生成文件sample.tar.gz
5.步骤2和3可合并为如下:
[root@localhost test]# tar -zcf sample.tar.gz fstab passwd shadow

二、解压

[root@localhost test]# tar -zxf sample.tar.gz