对于tar包、压缩包等相关概念的深入解释
- tar 命令用来打包
- gzip、bzip命令用来压缩、解压缩
起初tar
命令并不具备压缩功能,其仅仅是个打包工具,因为有的时候目录文件是不可以在某些地方进行传输的,所以需要打包成一个包文件,还有一个原因就是,目录文件是不可以直接进行压缩的,所以需要先打包一下
后来因为传输需要进行压缩,这样一来能快速传输,二来可以节省空间,所以可以使用压缩工具对包进行压缩,产生以.gz
和.bz2
结尾的压缩文件
至此相当于经历了打包和压缩两个步骤,但是实际应用中,总是分两步来做就显得有些麻烦,于是tar
命令有了参数可以使用,这些参数有:
参数 | 作用 |
---|---|
-c(小写) | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip格式压缩或者解压 |
-j(小写) | 用bzip2格式压缩或者解压 |
-J(大写) | 用xz格式进行压缩或者解压 |
-v | 显示压缩或者解压的过程 |
-f | 目标文件名 |
-p(小写) | 保留原始的权限与属性 |
-P(大写) | 使用绝对路径来压缩 |
-C(大写) | 指定解压到的目录 |
其中需要额外解释的是,-v
参数一般情况下最好加一下,因为有时候,执行压缩或者解压缩操作时,可能需要花费比较长的时间,如果屏幕一直没有输出,一方面不好判断进度情况,另一方面也会怀疑电脑是不是死机了。
-f
参数也很重要,必须放在参数的最后一位
,代表要压缩或者解压到哪个指定的目录
下面前后对比一下tar命令有了参数前后的变化
1、首先是没有用tar的压缩参数:
根据上述流程,可以看到主要分成了两步,第一步是tar命令打包成包文件,第二部是进行压缩(有.gz和.bz2两种格式可以选择)
2、因为tar命令有参数,加了参数后就可以直接打包压缩:
显而易见,第二种方式比较方便,可以将打包与压缩合并一起进行,只需要在使用tar命令时选择适当参数即可
一般地可以这样使用
[root@localhost ~]# tar -czvf etc.tar.gz /etc/ #将/etc/下的文件以Gzip格式压缩,压缩过程进行显示,压缩后名字为etc.tar.gz
#此命令压缩之后的etc.tar.gz文件被保存在当前目录下
[root@localhost ~]# tar -cjvf etc.tar.bz2 /etc/ #将/etc/下的文件以bzip2格式压缩,压缩过程进行显示,压缩后名字文etc.tar.bz2
#压缩后的etc.tar.bz2文件被保存在当前目录下
[root@localhost ~]# tar -xzvf etc.tar.gz -C /root/etc #将etc.tar.gz文件以Gzip格式解压,解压过程进行显示,解压到/root/etc下
[root@localhost ~]# tar -xjvf etc.tar.bz2 -C /root/etc #将etc.tar.bz2文件以bzip2格式解压,解压过程进行显示,解压到/root/etc下
总结:
tar打包和(Gzip、bz2)压缩实际上根本没有半毛钱关系,只是tar命令顺带帮你提供了压缩、解压的参数而已
-
需要注意的是:
假如有一个文件名为xxx.gz
,根据后缀可以判断出来,其并不是由tar包进行压缩得来的包压缩文件,而是直接由一个不是文件夹(目录)的文件直接压缩得到的普通压缩文件,所以这个时候对其进行解压,不应使用tar -xzvf
,而是使用gunzip解压
xxx.bz2
的文件也是同样的道理,对其进行解压不应使用tar -xjvf
,而是使用bunzip2进行解压 -
另外需要注意的还有:
单纯就压缩与解压而言,除了Gzip–>.gz
、bz2–>.bz2
的方式进行压缩之外,还有zip–>.zip
的压缩方式,同时这种压缩格式也经常出现在windows平台上
其他的压缩与解压方式、格式还有很多,不一一列举,仅举以上常用的格式,相信这个对于tar包和压缩的深入理解,会利于快速掌握对应的命令,否则死记硬背很容易忘记
–>有助于理解压缩包解压工具,建议收藏<–