一、简述
1.什么是压缩包?
顾名思义,压缩包就是将多个文件或目录压缩合并为一个特殊的文件。
2.为什么要对文件进行压缩?
- 压缩文件会减小文件的体积
- 加快资源传输
- 节省网络带宽
二、Linux 中常见的压缩包类型
1.zip
zip是一种常见的压缩格式,它使用DEFLATE算法进行压缩。DEFLATE算法是一种无损压缩算法,通过识别和替换重复出现的数据模式,以及使用霍夫曼编码进行编码,来减小文件大小。zip格式的压缩率通常较高,可以压缩多种类型的文件。
2.gz
gz是一种使用GNU压缩程序(gzip)进行压缩的格式。gzip使用DEFLATE算法对文件进行压缩,与zip相同。由于gzip仅对单个文件进行压缩,因此它通常与tar命令结合使用,生成.tar.gz文件。
3.bz2
bz2是一种使用Burrows-Wheeler算法和霍夫曼编码进行压缩的格式。Burrows-Wheeler算法通过对文件字符进行转换和排序,以便霍夫曼编码能够更有效地编码文件。相比于gzip,bz2格式的压缩率更高,但压缩和解压缩速度较慢。
4.tar.gz
tar.gz(或tgz)是一种使用tar命令打包文件,再使用gzip进行压缩的格式。tar命令将多个文件或目录打包成一个单独的文件,然后gzip对该文件进行压缩。tar.gz格式通常用于在Unix系统下进行文件归档和压缩。
5.tar.bz2
tar.bz2是一种使用tar命令打包文件,再使用bzip2进行压缩的格式。与tar.gz类似,tar.bz2格式也用于文件归档和压缩,压缩率相对较高。
三、常用压缩工具使用方法
1.gzip
PS:gzip 压缩仅对文件有效,无法压缩目录。
安装 gzip
~]# yum install gzip -y
参数说明
-d:解压缩包
示例
打包
解包
查看压缩的内容
打包当前目录下所有的文件
解压当前目录下所有的文件
2.zip/unzip
安装 zip
~]# yum install zip -y
参数说明
zip:
-r:递归压缩目录
-T:查看压缩包是否完整
unzip:
-l:查看压缩包内容
-t:检测压缩包文件是否完整
-d:指定解压位置
示例
递归压缩目录
查看压缩包是否完整
查看压缩包内容
检测压缩包文件是否完整
指定解压位置
3.tar
语法
tar [参数] [压缩包名称] [压缩文件/目录]
参数说明
-c:创建新的递归文件
-x:对递归文件解压缩
-t:查看压缩包内容
-f:指定压缩包名称(该参数写在最后)
-z:使用 gzip 压缩归档后的文件(tar.gz)
-j:使用 bzip2 压缩归档后的文件(tar.bz2)
-J:使用 xz 压缩归档后的文件(tar.xz)
-C:指定解压位置
-X:排除多个文件
-h:打包软连接
--exclude:在打包的时候写入需要排除的问价或目录
常用的打包组合
1.打包
czf 打包tar.gz格式
cjf 打包tar.bz2格式
cJf 打包tar.xz格式(使用较少)
czhf 打包tar.gz格式的软连接
2.解压缩
zxf 解压tar.gz格式
jxf 解压tar.bz格式
xf 自动选择解压模式
tf 查看压缩包内容
3.最常用
czf 打包tar.gz格式
tf 查看压缩包内容
xf 自动选择解压模式
-C 解压到指定目录
示例
打包
PS:如果在打 tar.bz2 包的时候报错 tar (child): bzip2: Cannot exec: No such file or directory 是因为 没有 bzip2 这个工具直接使用 yum install bzip2 -y 安装即可。
查看压缩包内容
解压
指定解压位置
排除单个文件
排除多个文件(将想要排除的文件写入一个文件中)
四、tar: Removing leading `/' from member names
或许有人已经发现,如果我们压缩 / 目录下的文件或目录,会有删除 / 目录的提示。这个提示是可以忽略的。出现提示的原因是因为通过原封不动的打包一个目录或文件的话,在解包的时候会覆盖之前的那个一个目录,所以会出现系统自动保护机制提示删除 / 目录。如果实在看着别扭可以通过以下方法解决。
-P:保留绝对路径,即允许备份数据中含有 / 目录。
五、tar 配合 find 使用示例
打包 /root 目录下的所有文件到 /opt 目录下