服务器重装系统前备份清单,防止丢数据
服务器重装系统会清空系统盘上的所有数据,
一旦格式化就无法通过常规手段恢复。重装前最稳妥的做法是先列清单、
再逐项备份、
最后验证备份文件可读,
确认无误后再执行重装。 下面这份清单按“先盘点、
再备份、
后验证”的顺序展开,
零基础用户也能照着一步步完成,
重点解决网站文件、
数据库、
配置和证书容易漏备的问题。
先搞清楚哪些数据必须备份
很多人只备份了网站目录,结果重装后数据库、SSL 证书和定时任务全丢了,网站照样跑不起来。
执行前先对照下面几类内容逐项确认:
- 网站程序与上传文件:常见路径为
/www/wwwroot/你的站点目录,或/home/wwwroot。 - 数据库数据:MySQL、MariaDB 里的所有业务库,尤其是用户表、订单表。
- Web 服务配置:Nginx 的
/www/server/panel/vhost/nginx/、Apache 的/etc/httpd/conf.d/等。 - SSL 证书文件:宝塔默认在
/www/server/panel/vhost/cert/,手动部署的常在/etc/letsencrypt/。 - 计划任务与运行环境:
crontab -l输出的定时任务、PHP 版本、已安装扩展。 - 邮件与日志:若服务器同时做邮件服务,邮件目录
/var/mail或/home/vmail需单独备份。
判断标准:凡是重装后无法通过重新安装软件自动生成的内容,都属于必须备份的范围。 系统自带的软件包、可重装的运行环境可以不备份,但配置文件和业务数据必须保留。
备份前的准备动作
正式打包前先做两件小事,能避免备份到一半失败。
第一,确认磁盘剩余空间。
用下面命令查看,备份文件通常和原数据体积接近,剩余空间建议大于待备份数据总量的 1.5 倍:
df -h
第二,把网站切到维护状态或暂停写入。
如果站点还在被访问,数据库备份期间可能有新数据写入,导致备份不完整。
宝塔面板可以在“网站”里临时关闭站点,命令行可以停掉 Web 服务:
systemctl stop nginx
systemctl stop mysql
停机备份最稳妥,但会短暂中断访问。 如果业务不能停,至少要在低峰期操作,并在备份数据库时使用事务一致性参数。
逐项执行备份操作
备份网站文件
用 tar 打包整个站点目录,排除日志和缓存可以减小体积:
tar -czvf /backup/web_$(date +%F).tar.gz /www/wwwroot/你的站点目录 \
--exclude=*.log --exclude=runtime --exclude=cache
宝塔面板用户可以在“文件”里进入站点目录,右键选择“压缩”,再下载到本地。建议同时保留服务器上的备份包和本地一份,只留服务器上等于没备份。
导出 MySQL 数据库
单个库导出:
mysqldump -u root -p 数据库名 > /backup/db_数据库名_$(date +%F).sql
导出全部数据库:
mysqldump -u root -p --all-databases > /backup/all_db_$(date +%F).sql
宝塔面板路径:数据库 → 选择对应库 → 备份。导出后务必检查文件大小不为 0,并用 head 看一眼开头是否有 SQL 内容。
保存配置、证书和定时任务
配置和证书文件体积小,直接打包即可:
tar -czvf /backup/conf_$(date +%F).tar.gz \
/www/server/panel/vhost/nginx /www/server/panel/vhost/cert /etc/letsencrypt
crontab -l > /backup/crontab_$(date +%F).txt
证书文件丢失后重新签发需要重新验证域名,可能影响 HTTPS 访问,所以必须单独备份。
常见坑和容易漏掉的内容
- 只备份了网站目录,忘了数据库:这是最典型的丢数据原因,网站文件恢复后连不上数据,页面直接报错。
- 备份文件放在系统盘:重装时系统盘会被格式化,备份包一起消失。应把备份包下载到本地,或放到数据盘、对象存储。
- 没记录运行环境版本:重装后 PHP、MySQL 版本和原来不一致,程序可能报兼容错误。建议用
php -v、mysql -V记录当前版本。 - 忽略伪静态和重定向规则:这些通常在 Nginx 配置里,漏备后网站会出现 404 或跳转异常。
- 备份完成却没验证:文件损坏或导出中断时,只有恢复时才会发现,届时已经来不及。
重装前如何验证备份可用
备份完成后不要急着格式化,先做三项检查:
- 确认备份文件存在且大小合理:
ls -lh /backup/。 - 检查压缩包完整性:
tar -tzf /backup/web_日期.tar.gz | head,能列出文件说明包没坏。 - 数据库文件用
grep -m1 "CREATE TABLE" /backup/db_xxx.sql确认包含建表语句。
只有备份文件能正常打开、内容可读,才算真正备份成功。 如果条件允许,可以在一台测试机上尝试恢复一次,验证流程是否完整。
几个常见疑问
备份要保留多久? 建议至少保留重装前最近一次完整备份,直到新系统上线并稳定运行一周后再清理,避免恢复后才发现遗漏。
能不能直接用服务商的快照代替手动备份? 快照恢复依赖服务商平台,跨平台或换服务商时可能无法使用。
手动备份包更通用,两者结合更稳妥。
数据库太大,mysqldump 很慢怎么办? 可以在低峰期执行,或使用 --single-transaction 参数减少锁表影响,具体以官方文档说明为准。
重装后发现漏备份了怎么办? 如果旧系统盘未被覆盖,可尝试挂载旧盘找回;
一旦被格式化,常规恢复难度很大,所以重装前的备份清单必须逐项核对。