重装系统前要备份哪些东西:一份清单
发布时间:2025-12-15 22:11       
更新时间:2025-12-15 23:57
重装系统是理顺环境的好机会,也是丢数据的高发时刻。磁盘格式化之后什么都没了,动手前照着清单逐项打包,比凭记忆回忆靠谱得多。
## 业务数据
网站目录、应用代码、上传的附件是第一优先级,打包时连隐藏文件一起:
```
tar czf site.tgz -C /var/www .
```
代码如果是 Git 仓库,先 git push 到远端再动手更稳。数据库单独导出:MySQL 用 mysqldump --all-databases --single-transaction --triggers --routines > all.sql,其中 --single-transaction 保证 InnoDB 表在一致性时点导出、不锁业务;Redis 需要持久化数据时,把 RDB 与 AOF 文件一并拷走。导出前记一下当时的库大小,恢复后对照数据量,确认没有缺斤少两。
## 配置文件
零散但致命。重点目录:/etc/nginx 或 /etc/httpd(站点与证书路径都在里面)、PHP 与 MySQL 的配置、/etc/systemd/system 下自己写的 unit、应用自己的 conf 文件。一条兜底命令:tar czf etc.tgz /etc,整个目录先搂一份再慢慢挑。注意有些应用配置放在家目录的隐藏文件里,比如 .env,别漏掉。
## 证书与密钥
TLS 证书与私钥(含续期配置,如 /etc/letsencrypt)、SSH 密钥对。尤其注意各用户家目录下的 .ssh 目录;重装后主机指纹变了,旧客户端会报警告,提前导出私钥与 known_hosts 能省去麻烦。
## 任务与规则
```
crontab -l > cron_root.txt
for u in $(awk -F: '$3>=1000{print $1}' /etc/passwd); do crontab -l -u $u > cron_$u.txt 2>/dev/null; done
iptables-save > iptables.rules
```
计划任务和防火墙规则最容易被忘掉,因为平时看不见它们在工作。
## 核对与落地
备份文件一律传到本机之外,对象存储、另一台机器都行,只留在本机等于没备份;传完生成 md5sum backup.tgz > backup.md5,恢复后校验完整性。恢复顺序建议固定:先系统与环境,再配置,再数据,最后恢复任务与规则。验证做最小回归检查:数据库导入是否报错、nginx -t 是否通过、证书日期是否有效,证书续期用 certbot renew --dry-run 演练一遍。清单式做法的价值在于可复制:做一次留档,下次照单执行,漏项概率大大降低。清单每经历一次重装就更新一版,越用越贴合自己的环境。