Linux之打包/解包、压缩/解压

这里介绍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著


关键词:

下一篇: 最后一页

相关新闻

精彩推送