这里介绍Linux下如何对文件进行打包/解包、压缩/解压​

abstract.jpg
压缩/解压:gzip命令

Linux中压缩、解压文件的工具有很多,比如:compress、gzip、bzip2、xz等。这里介绍高频使用的gzip命令。gzip工具特征在于:只能压缩文件,不能压缩目录。gzip压缩后默认在原文件名称后追加 .gz 后缀

#压缩若干个指定的文件gzipfile1file2...#压缩当前目录下的所有文件,其中通配符*代表当前目录下所有文件gzip*#压缩当前目录下(含子目录下)的所有文件,其中通配符*代表当前目录下所有文件gzip-r*


(资料图片)

figure 1.jpg

解压操作类似,既可以使用gunzi命令。也可以继续使用gzip命令,只需添加 -d 选项即可

#解压当前目录下(含子目录下)的所有文件,其中通配符*代表当前目录下所有文件gzip-dr*

figure 2.jpg
打包/解包:tar命令

通过对比Linux、Win下的压缩操作表现来看,似乎发现一个问题了。Win下可以将多个文件压缩成一个文件,而在Linux中gzip命令则是一个一个压缩的。为此在Linux下需要先将多个文件归档到一个文件当中,即所谓的打包(归档文件的后缀习惯上用 .tar )。通常使用tar命令即可。事实上该tar命令选项较为复杂,而且很多选项基本很少用到。故这里只介绍常见的选项

-c :创建tar归档文件,即所谓的打包

-v :命令执行过程中显示正在处理的文件名

-f :用以指定操作的tar归档文件

-x :从tar归档文件中提取文件,即所谓的解包

-t :列出以查看tar归档文件中的内容,但不提取

-C :切换到指定目录

-z :调用gzip命令压缩/解压文件

-Z :调用compress命令压缩/解压文件

-j :调用bzip2命令压缩/解压文件

-J :调用xz命令压缩/解压文件

1. 打包命令如下所示

#将指定文件打包到归档文件file1.tar中tar-cvffile1.tarfile1file2dir1/dir2/...#将当前目录下(含子目录下)的所有文件打包到归档文件file1.tar中,其中通配符*代表当前目录下所有文件tar-cvffile1.tar*

figure 3.jpg

2. 查看归档文件中的内容

#查看归档文件file1.tar中的内容tar-tffile1.tar

figure 4.jpg

3. 解包命令如下所示

#对指定tar归档文件在当前工作目录下进行解包tar-xvftemp/file1.tar#对指定tar归档文件在指定目录下进行解包tar-xvftemp/file1.tar-C./temp2/

figure 5.jpg
组合拳

故在Linux当中对多文件进行压缩前,一般都需要先打包成tar归档文件;而在解压后,通常得到也是一个tar归档文件,还需要再次解包。为此,tar命令中直接提供了 compress 、 -z 、 -j 、 -J 等选项,以便直接调用compress、gzip、bzip2、xz等命令进行压缩/解压。故如果期望对多文件进行压缩,直接利用tar命令即可一次性搞定。解压文件同理。具体命令如下,这里以使用gzip压缩为例,如果期望使用其他压缩命令,只需将下述命令中的 -z 选项 替换为其它压缩软件对应的选项即可

#压缩文件命令组合拳:对指定文件打包并使用gzip压缩tar-zcvffoo.tar.gzfile1file2dir1dir2...#解压文件命令组合拳:对压缩文件,先使用gzip解压,再解包tar-zxvffoo.tar.gz

压缩示例

figure 6.jpg

解压示例

figure 7.jpg

这里强调下在解压的时候,我们首先需要知道该压缩文件是用什么工具压缩的。一方面,我们可以通过文件后缀名来判定;另一方面,我们还可以使用file命令来判定

文件后缀名 .tar.gz 或 .tgz 习惯上代表该tar归档文件使用gzip命令进行压缩

文件后缀名 .tar.bz2 习惯上代表该tar归档文件使用bzip2命令进行压缩

文件后缀名 .tar.xz 习惯上代表该tar归档文件使用xz命令进行压缩

figure 8.jpg
参考文献

Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著

推荐内容