Linux下tar备份需选对参数、避开挂载点、注意权限与路径规范,重点备份/etc、/home、/root、/opt、/usr/local,排除/proc、/sys、/dev、/run、/tmp等虚拟或临时目录,并合理使用--exclude过滤及-C指定路径确保安全还原。

Linux下用tar备份文件系统,核心是选对参数、避开挂载点、注意权限和路径规范。不是所有目录都适合直接打包,也不是所有情况都要加压缩选项。
明确备份目标:哪些目录该备,哪些要跳过
系统级备份通常聚焦于/etc、/home、/root、/opt、/usr/local等用户配置和自定义软件所在路径。以下目录一般不建议直接打包:
- /proc、/sys、/dev:虚拟文件系统,内容由内核动态生成,打包无意义且可能报错
- /run、/tmp:运行时临时数据,重启即清空
- /boot:可备份,但需确认当前内核版本是否已包含在镜像中,避免恢复后无法启动
- 其他已挂载的独立分区(如/mnt/data):若该分区本身是另一个文件系统,应单独处理,避免嵌套打包
基础备份命令:不压缩 vs 压缩归档
根据数据量和用途选择是否启用压缩。小容量配置文件建议不压缩,保留原始结构便于快速提取;大容量用户数据推荐压缩节省空间。
- 仅归档(不压缩):
tar -cf backup-20240515.tar /etc /home /root - gzip压缩(通用平衡):
tar -czf backup-20240515.tar.gz /etc /home /root - xz压缩(高压缩率,较慢):
tar -cJf backup-20240515.tar.xz /etc /home /root
注意:-c表示创建新归档,-f必须紧跟归档文件名,顺序不能颠倒;-v(显示过程)可临时添加用于调试,生产环境建议省略以提升速度。
排除干扰项:跳过不需要的路径和文件类型
用--exclude精准过滤,避免备份缓存、日志或临时文件。支持通配符和多次使用:
- 跳过所有
.cache目录:--exclude='*/.cache' - 跳过/home/*/.thumbnails和/home/*/.local/share/Trash:
--exclude='/home/*/.thumbnails' --exclude='/home/*/Trash' - 跳过日志文件:
--exclude='/var/log/*.log' --exclude='/var/log/journal'(注意:/var/log本身一般不纳入系统备份,除非有特殊审计需求)
建议先用--dry-run测试排除效果:tar -cf - --dry-run --exclude='*/.cache' /home | head -n 5,确认实际参与打包的路径符合预期。
还原与验证:别只顾打包,忘了怎么安全恢复
备份完成只是第一步。还原前务必检查归档完整性,并选择合适的目标路径:
- 查看归档内容:
tar -tf backup.tar.gz | head -n 20 - 校验是否损坏:
tar -tzf backup.tar.gz >/dev/null && echo "OK" || echo "Corrupted" - 解压到指定目录(如临时恢复区):
tar -xzf backup.tar.gz -C /mnt/recover/,避免直接-C /覆盖系统 - 恢复单个文件更安全:
tar -xzf backup.tar.gz etc/hostname -C /,只还原/etc/hostname
重要提示:若备份含绝对路径(默认行为),还原时必须用-C指定根目录,否则可能写入错误位置;如需相对路径备份,创建时加-C /并指定相对源路径,例如:tar -czf home-backup.tar.gz -C / home,这样解压时tar -xzf home-backup.tar.gz -C /才准确还原到/home。










