1.8.4 归档压缩与解压(tar、gzip、bzip2、zip)
归档压缩与解压(tar、gzip、bzip2、zip)#
归档压缩用于备份、迁移与节省空间。典型流程是“先归档再压缩”,如 tar + gzip。zip 则一体化完成归档与压缩。
一、原理草图(归档与压缩关系)#
二、工具安装与校验#
- Debian/Ubuntu
sudo apt update
sudo apt install -y tar gzip bzip2 zip unzip xz-utils
- RHEL/CentOS
sudo yum install -y tar gzip bzip2 zip unzip xz
- 验证版本
tar --version
gzip --version
bzip2 --version
zip -v | head -n 1
三、tar:归档与压缩(命令解释+完整示例)#
- 关键参数说明
c创建归档,x解包,t列表内容v输出详细过程,f指定归档文件名zgzip,jbzip2,Jxz-
C指定解压目录(避免路径污染) -
示例:备份 /etc 与 /var/log 并 gzip 压缩
# 1) 创建目录
mkdir -p /data/backup
# 2) 打包并压缩
tar -czvf /data/backup/sys-$(date +%F).tar.gz /etc /var/log
# 3) 查看归档内容
tar -tf /data/backup/sys-$(date +%F).tar.gz | head -n 5
- 示例:解压到指定目录
mkdir -p /data/restore
tar -xzvf /data/backup/sys-$(date +%F).tar.gz -C /data/restore
- 示例:仅归档(不压缩)
tar -cvf /data/backup/sys.tar /etc /var/log
四、gzip / bzip2:单文件压缩#
- gzip
# 压缩(会替换原文件)
gzip /var/log/messages
# 解压
gunzip /var/log/messages.gz
# 保留原文件
gzip -c /var/log/messages > /var/log/messages.gz
- bzip2(更高压缩率)
# 压缩
bzip2 /var/log/messages
# 解压
bunzip2 /var/log/messages.bz2
# 保留原文件
bzip2 -c /var/log/messages > /var/log/messages.bz2
五、zip / unzip:跨平台传输#
# 压缩目录(-r 递归)
zip -r /data/backup/etc.zip /etc
# 查看内容
unzip -l /data/backup/etc.zip | head -n 5
# 解压到指定目录
unzip /data/backup/etc.zip -d /data/restore
六、常见排错与定位#
- **错误:tar: Removing leading
/' from member names** 解释:tar 为避免解压覆盖根目录,自动去除绝对路径前缀。 处理:无需处理;如需保留,使用-P`(谨慎)。
tar -czvf /data/backup/etc.tar.gz -P /etc
- 错误:gzip: stdin: not in gzip format
解释:文件不是 gzip 格式或后缀误导。
处理:先判断真实格式再选择解压。
file backup.tar.gz
- 解压后权限变化
处理:使用-p保留原权限(以 root 解压)。
tar -xzvpf backup.tar.gz -C /data/restore
- zip 解压乱码(编码问题)
处理:指定编码或使用unzip -O。
unzip -O GBK backup.zip -d /data/restore
七、生产实践建议#
- 备份优先使用
tar + gzip(兼容性好、速度快)。 - 大文件归档后生成校验值,确保传输完整性。
md5sum /data/backup/sys-$(date +%F).tar.gz > /data/backup/sys-$(date +%F).md5
md5sum -c /data/backup/sys-$(date +%F).md5
八、练习(可直接执行)#
- 将
/etc与/var/log打包为backup.tar.gz,并解压到/tmp/restore。 - 对
/var/log/messages分别使用 gzip 与 bzip2 压缩,比较大小(ls -lh)。 - 使用 zip 压缩
/etc,并验证压缩包内容列表。 - 生成归档的 md5 校验并验证正确性。