Linux之打包/解包、压缩/解压
压缩/解压:gzip命令
Linux中压缩、解压文件的工具有很多,比如:compress、gzip、bzip2、xz等。这里介绍高频使用的gzip命令。gzip工具特征在于:只能压缩文件,不能压缩目录。gzip压缩后默认在原文件名称后追加 .gz 后缀
# 压缩若干个指定的文件
gzip file1 file2 ...
# 压缩当前目录下的所有文件,其中通配符 * 代表当前目录下所有文件
gzip *
# 压缩当前目录下(含子目录下)的所有文件,其中通配符 * 代表当前目录下所有文件
gzip -r *
解压操作类似,既可以使用gunzi命令。也可以继续使用gzip命令,只需添加 -d 选项即可
# 解压当前目录下(含子目录下)的所有文件,其中通配符 * 代表当前目录下所有文件
gzip -dr *
打包/解包: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 -cvf file1.tar file1 file2 dir1/ dir2/ ...
# 将当前目录下(含子目录下)的所有文件打包到归档文件 file1.tar 中,其中通配符 * 代表当前目录下所有文件
tar -cvf file1.tar *
2. 查看归档文件中的内容
# 查看归档文件 file1.tar 中的内容
tar -tf file1.tar
3. 解包命令如下所示
# 对指定tar归档文件在当前工作目录下进行解包
tar -xvf temp/file1.tar
# 对指定tar归档文件在指定目录下进行解包
tar -xvf temp/file1.tar -C ./temp2/
组合拳
故在Linux当中对多文件进行压缩前,一般都需要先打包成tar归档文件;而在解压后,通常得到也是一个tar归档文件,还需要再次解包。为此,tar命令中直接提供了 compress 、 -z 、 -j 、 -J 等选项,以便直接调用compress、gzip、bzip2、xz等命令进行压缩/解压。故如果期望对多文件进行压缩,直接利用tar命令即可一次性搞定。解压文件同理。具体命令如下,这里以使用gzip压缩为例,如果期望使用其他压缩命令,只需将下述命令中的 -z 选项 替换为其它压缩软件对应的选项即可
# 压缩文件命令组合拳: 对指定文件打包并使用gzip压缩
tar -zcvf foo.tar.gz file1 file2 dir1 dir2 ...
# 解压文件命令组合拳:对压缩文件,先使用gzip解压,再解包
tar -zxvf foo.tar.gz
压缩示例
解压示例
这里强调下在解压的时候,我们首先需要知道该压缩文件是用什么工具压缩的。一方面,我们可以通过文件后缀名来判定;另一方面,我们还可以使用file命令来判定
-
文件后缀名 .tar.gz 或 .tgz 习惯上代表该tar归档文件使用gzip命令进行压缩 -
文件后缀名 .tar.bz2 习惯上代表该tar归档文件使用bzip2命令进行压缩 -
文件后缀名 .tar.xz 习惯上代表该tar归档文件使用xz命令进行压缩
参考文献
-
Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著
评论