深色模式
压缩归档 tar/gzip
摘要:磁盘快满了要搬走旧日志?本文带你用 tar 把目录打包成 .tar.gz,并解压校验文件没损坏。前提:有 tar/gzip(几乎都自带)。
适用环境
bash
tar --version | head -1
gzip --version | head -1
mkdir -p ~/logtest/var/log && for i in $(seq 1 3); do echo "log $i" > ~/logtest/var/log/app$i.log; done1
2
3
2
3
一、打包并压缩
bash
# 进到父目录,用相对路径打包,解压时更干净
cd ~
tar -czf logs-$(date +%F).tar.gz logtest/
# -c 创建 -z 用 gzip 压缩 -f 指定文件名
ls -lh logs-*.tar.gz1
2
3
4
5
2
3
4
5
二、查看包里有什么(不解压)
bash
tar -tzf logs-*.tar.gz # -t 列出内容,-z 对应 gzip1
三、解压并校验
bash
mkdir -p /tmp/extract && cd /tmp/extract
tar -xzf ~/logs-*.tar.gz # -x 解压
# 校验:对比原目录文件数与内容
diff -r ~/logtest /tmp/extract/logtest && echo "内容一致"1
2
3
4
2
3
4
验证
- [ ]
tar -tzf能列出包内文件 - [ ] 解压后
diff -r与原目录一致 - [ ] 压缩包体积明显小于原目录
常见坑
- 绝对路径风险:用
tar -czf x.tgz /var/log会在包里带根/,解压可能覆盖系统文件。先cd再用相对路径。 - 大目录用 xz 更省空间:
-j(bzip2)/-J(xz) 压缩率更高但更慢,按需选。 - 排除某些文件:
tar --exclude='*.tmp' -czf x.tgz dir/。 - 解压到错误位置:没
cd直接解压会散落当前目录,养成先建目标目录习惯。