Linux系统备份需先明确核心目录:/etc、/home、/var/www、/var/lib/mysql、/var/spool/mail、/root必须备份;/proc、/sys、/dev、/run、/tmp、/var/tmp、/boot、/usr、/bin等应排除;并按目录特性采用差异化备份与定期验证策略。

Linux系统备份不能只看“要不要备份”,而要先理清“哪些目录真正承载业务数据和系统状态”。从目录结构出发规划备份,能避免漏保关键路径、冗余备份无用文件,让策略既精准又可落地。
核心目录必须纳入备份范围
不是所有目录都同等重要。以下路径是多数生产环境不可跳过的备份对象:
- /etc:系统及服务的全部配置,包括网络、用户、防火墙、SSH、Web服务器等。丢失即失控。
- /home:普通用户主目录,含文档、脚本、开发项目等实际业务产出内容。
- /var/www(或/srv/http等):Web服务根目录,存放网站代码、模板、上传资源等。
- /var/lib/mysql(RPM安装)或/usr/local/mysql/data(源码安装):MySQL数据文件所在位置,直接对应数据库内容。
- /var/spool/mail:本地邮件队列,对内部通知类系统仍具价值。
- /root:root用户的家目录,常存运维脚本、密钥、临时配置等高权限资产。
按目录特性选择备份方式
同一台机器上不同目录的数据变化规律差异很大,统一用“全量每天”既浪费又危险:
- /etc 和 /root:变更低频但影响重大。建议每日定时tar + gzip归档,并用rsync同步至异地;保留最近7天版本,带时间戳命名(如 etc-20260610.tar.gz)。
- /home:用户数据频繁增删。优先用rsync -a --delete做增量同步,排除缓存、临时文件(如--exclude='*.tmp' --exclude='.cache')。
- /var/www:代码更新通常走Git或CI/CD。备份重点不是全部文件,而是未纳入版本控制的上传目录(如 uploads/、media/)和自定义配置(如 .env、nginx-site-conf)。
- /var/lib/mysql:绝不可直接复制运行中的数据文件。必须配合mysqldump或mysqlpump做逻辑导出,或使用Percona XtraBackup做热备份;导出后同样用tar压缩并校验MD5。
避开常见目录备份陷阱
有些目录看似重要,实则不该或不能直接备份:
- /proc、/sys、/dev、/run:这些是内核虚拟文件系统,内容实时生成,备份毫无意义,且可能引发权限或挂载异常。
- /tmp 和 /var/tmp:临时文件,生命周期短,不具恢复价值;若强制备份,反而污染备份集、拖慢速度。
- /boot:内核与引导文件。除非你频繁手动升级内核或修改GRUB,否则只需在重大系统升级后手动归档一次即可;日常备份反而增加误操作风险。
- /usr 和 /bin:系统二进制文件,由包管理器(yum/apt)控制。重装系统时可通过仓库一键还原,无需占用备份空间。
验证备份有效性比生成备份更关键
备份文件存在 ≠ 能恢复。每个备份任务执行后,应自动触发轻量级验证:
- 对tar包运行tar -tzf backup.tar.gz | head -n 20,确认归档可读、结构完整;
- 对mysqldump输出,检查末尾是否有"Dump completed"标记,并用head -n 5确认SQL头合法;
- 每月至少一次,在测试机上执行rsync --dry-run反向同步,或抽取一个/etc下的配置文件尝试还原;
- 所有备份脚本末尾添加echo "$(date): backup OK" >> /var/log/backup.log,失败时触发邮件告警。


















