linux中tar打包备份核心是归档后调用gzip/xz等压缩,需用相对路径避免冗余层级、--exclude精准排除无用文件、嵌入日期命名并校验确保可用。

Linux 中打包备份单个或多个文件,核心是用 tar 命令完成归档(打包),再按需加压缩参数。它不直接压缩,而是调用 gzip、xz 等工具协同工作。关键不是“能不能打”,而是“打得干净、可还原、不冗余”。
打包单个文件(含路径控制)
直接指定文件名即可,但要注意路径写法影响解压结果:
- 推荐用相对路径:先 cd 到文件所在父目录,再执行命令,避免解压时多出冗余层级
- 例如,/home/user/report.txt 想打包为 clean-report.tar.gz:
cd /home/user && tar -czf report-$(date +%Y%m%d).tar.gz report.txt - 不推荐直接写绝对路径如
tar -czf backup.tar.gz /home/user/report.txt,解压后会生成完整/home/user/目录结构
打包多个文件或文件夹
tar 支持一次指定多个源,顺序无关,但路径要统一处理:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 多个文件:如打包
file1.txt、file2.log和config.yaml:tar -czf multi-files-$(date +%Y%m%d).tar.gz file1.txt file2.log config.yaml - 多个目录:比如
src/和docs/都在当前目录下:tar -czf project-full-20261008.tar.gz src/ docs/ - 混合打包:文件 + 目录也完全支持,如
tar -czf bundle.tar.gz script.sh data/ notes.md
排除无用内容,减小体积并避免失败
日志、临时文件、缓存等不仅占空间,还可能因权限或占用导致打包中断:
- 用 --exclude 精准过滤,注意加单引号防止 shell 展开:
tar -cJf app-backup.tar.xz --exclude='*.log' --exclude='tmp/' --exclude='.DS_Store' /opt/app - 匹配规则:--exclude='cache' 匹配任意位置的 cache 目录;--exclude='cache/' 可能失效,不建议加尾部斜杠
- 别指望 .gitignore —— tar 完全不读它,必须手动列明
命名带日期+快速校验,确保备份可用
没有时间戳的备份容易覆盖,不验证的备份等于没备:
- 文件名嵌入时间:用
$(date +%Y%m%d_%H%M)生成唯一标识,如backup-20261008_1215.tar.gz - 加 -v 查看过程(首次运行建议加上),确认目标是否真被包含
- 打包后立即校验:
tar -tzf backup-20261008_1215.tar.gz | head -n 3看开头几行是否合理
或用file backup-*.tar.gz确认确实是 gzip 格式归档










