Linux系统配置文件备份:避免一次误操作毁掉整个服务器

为什么配置文件备份比数据还重要

很多人觉得只要数据不丢就万事大吉,但实际工作中,一个关键的配置文件被改错,比如 /etc/ssh/sshd_config/etc/network/interfaces,可能导致你再也连不上服务器。这种事在深夜运维时尤其致命——重启网络服务后发现IP没生效,SSH直接断连,只能靠机房人员现场接显示器。

我见过最惨的一次是同事修改了 /etc/fstab 挂载点写错,系统重启直接进不去,而他前一天没做任何备份。整整两小时排查才恢复,期间业务中断。

哪些配置文件必须定期备份

不是所有配置都需要备份,挑关键的来:

  • /etc/passwd/etc/shadow/etc/group —— 用户权限核心
  • /etc/ssh/sshd_config —— 远程登录命脉
  • /etc/fstab —— 系统挂载全靠它
  • /etc/nginx/nginx.conf/etc/apache2/apache2.conf —— Web服务配置
  • /etc/resolv.conf —— DNS解析出问题网站全打不开
  • /etc/crontab/var/spool/cron/ 下的任务 —— 定时任务别丢了

用 tar 打包是最简单的方法

每天凌晨自动打包一次,保留最近7天:

tar -czf /backup/config-$(date +\%Y\%m\%d).tar.gz /etc/passwd /etc/shadow /etc/group /etc/ssh/sshd_config /etc/fstab /etc/resolv.conf /etc/crontab

加个 cron 任务:

0 2 * * * /usr/bin/tar -czf /backup/config-$(date +\%Y\%m\%d).tar.gz /etc/passwd /etc/shadow /etc/group /etc/ssh/sshd_config /etc/fstab /etc/resolv.conf /etc/crontab >/dev/null 2>&1

配合 rsync 同步到另一台机器更安全

本地备份万一硬盘坏了也白搭。用 rsync 推送到内网另一台主机:

rsync -avz /backup/config-*.tar.gz user@192.168.1.100:/backup/linux_configs/

这样即使主服务器宕机,也能从备份机拉回配置快速重建。

别忘了测试恢复流程

备份了但从没试过恢复?等于没备。找个测试机,故意删掉 /etc/ssh/sshd_config,然后解压恢复:

tar -xzf config-20240405.tar.gz -C /

重启 ssh 服务看看能不能连进去。这一步能省掉未来90%的慌乱。

小技巧:用 git 管理配置变更

如果你习惯用 Git,可以把 /etc 下的部分文件纳入版本控制:

cd /etc && git init
git add ssh/sshd_config fstab network/interfaces
git commit -m "初始配置备份"

每次修改前 commit 一次,出问题直接 git checkout 回退。连 diff 都能看,比对改动一目了然。

当然,敏感文件如 shadow 别提交到远程仓库,本地 git 就够用了。