Linux系统中,最常用的打包命令就是tar了,不仅如此,tar命令还可以解打包解压缩,十分方便。如果单纯想压缩文件,就需要我们的gzip命令了。
使用tar打包归档的包叫做tar包,以.tar结尾
使用gzip压缩的文件,以.gz结尾
日常使用中,特别是对目录及里面的文件,一般先进行tar打包再进行gzip压缩,此时的文件以.tar.gz结尾
tar命令的打包操作
基本格式:
tar [参数] [打包后的目录或文件(以.tar结尾)] [打包前的目录或源文件]
例:tar -cvf demo.tar demo
各参数及含义如下表所示:
参数 | 含义 |
---|---|
-c | 做打包操作,可将多个文件或目录进行打包 |
-v | 显示打包过程 |
-f | 后接包名(必须要写)指明要打包的目录或源文件的名称 |
注意一点,在tar命令中,参数前的“-”可以省略,即“-cvf”与“cvf”的功能是一样的。
举个栗子🌰:
对文件或者目录进行打包操作
文件:tar -cvf demo.tar demo
目录:tar -cvf test.tar test0/
执行结果如下
对文件进行打包操作:
对目录进行打包操作:
tar命令的解打包操作
基本格式:
tar [参数] [包名称]
例:tar -xvf abc.tar
各参数及含义如下表所示:
参数 | 含义 |
---|---|
-x | 做解打包操作 |
-v | 显示解打包过程 |
-f | 后接包名(必须要写)指明要解打包的tar包的包名 |
-t | 查看tar包中有哪些文件或目录,不做解打包操作 |
-C(大写) | 指定解打包的具体位置 |
注意一点,“-C”参数可以不写,此时默认解打包在当前目录下
举个栗子🌰:
1⃣️将文件解打包到当前目录
tar -xvf ab.tar
结果如下图所示:
2⃣️将文件解打包到指定目录
tar -xvf abc.tar -C test0/
结果如下图所示:
gzip命令的压缩(解压缩)操作
基本格式:
gzip [参数(可省略)] [源文件]
例:gzip demo
常用参数及含义如下表所示:
参数 | 含义 |
---|---|
-c | 保留源文件的压缩,需要配合“>” |
-d | 对压缩文件进行解压缩 |
-r | 递归压缩指定目录下以及子目录下的所有文件 |
-v | 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比 |
-number | number表示压缩等级,number为1 表示压缩等级最低,压缩比最差;number为9 压缩比最高。默认压缩比是 number为6 |
注意:gzip命令比较灵活,其后可以不加参数直接加源文件,此时直接对源文件进行压缩,但会自动删除掉源文件
举个栗子🌰:
1⃣️gzip不接参数直接压缩源文件
gzip demo
演示结果全程如下所示:
2⃣️gzip压缩并保留源文件
gzip -c abc > abc.gz
演示结果如下图所示:
3⃣️gzip压缩目录
gzip -r test/
演示结果如下图所示:
观察栗子可以发现, 用gzip压缩目录的话,gzip只会将目录中的文件进行压缩,并不会对目录进行压缩。
如果想对目录进行压缩的话,必须先用tar命令对其打包,然后对该打包文件进行gzip压缩
4⃣️gzip解压缩
gzip -d demo.gz
演示结果如下图所示:
读到这,不少读者可能会觉得Linux下的打包压缩太不灵活了吧,特别针对目录的操作,岂不是要一步步的输入命令。
其实不然,tar命令有一步进行打包压缩的操作,也有一步进行解压缩解打包的操作。笔者这么写是方便大家一步步的理解整个打包压缩的过程。
tar命令的一体化打包压缩(解压缩解打包)操作
基本格式:
tar [参数] [压缩包名称] [源文件或目录]
# “源文件或目录”只在打包压缩时用到,“解压缩解打包不会用”
例:tar -zcvf demo.tar.gz demo # 将文件demo打包压缩为demo.tar.gz
例:tar -zxvf demo.tar.gz # 将文件demo.tar.gz解压缩解打包为demo
常用参数及含义如下表所示:
参数 | 含义 |
---|---|
-z | 一步压缩和解压缩 “.tar.gz” 格式 |
-j | 一步压缩和解压缩 ".tar.bz2"格式 |
举个栗子🌰:
1⃣️将文件一步压缩为.tar.gz或.tar.bz2格式:
tar -zcvf demo.tar.gz demo
tar -jcvf abc.tar.bz2 abc
# 注意参数z与j及压缩包的后缀名
演示结果如下图所示:
该例子不局限于对文件,还可以对目录进行压缩,并且压缩完源文件保留
2⃣️将文件一步解打包解压缩:
# 先把之前的demo,abc两文件删除掉
tar -zxvf demo.tar.gz
tar -jxvf abc.tar.bz2
演示结果如下图所示:
如上所示,解压缩解打包后源文件依旧保留
小结
一般日常中比较常用的参数组合有两种:
打包用“-cvf”
压缩用“-xvf”
如果考虑一步打包压缩或者解压缩解打包,按需添加“-z”,“-j”参数
参考资料
[1] CSDN博客:Linux文件的压缩和解压命令tar
[2] CSDN博客:linux .gz文件 压缩与解压缩命令
[3] C语言中文网:Linux tar打包命令详解
[4] C语言中文网:Linux gzip命令:压缩文件或目录