云服务器数据迁移完整教程:从旧机器到新机器,一次搬完不翻车
上周半夜,一个做外贸站的朋友给我发消息:老服务器快到期了,他打算搬到新机器上,结果文件传了一半、数据库导进去全是问号、域名解析一改网站直接 502。折腾到凌晨三点,网站停了六个小时,丢了两单询盘。
如果你也正要换服务器——不管是到期续费太贵、线路变差,还是想换到免备案的香港/日本机房——这篇就是为你写的。我按自己搬过几十次站的流程,把步骤拆成“照着做就行”的程度,中间踩过的坑也都标出来了。
一、先列清单,再动手
很多人一上来就 scp 传文件,这是最容易翻车的地方。动手前,先在旧服务器上把这几样东西记清楚:
- 软件版本:
php -v、mysql -V、nginx -v,新机必须装同一个大版本。你可能不知道,PHP 7.4 直接升到 8.2,一大半老 CMS 会当场白屏。 - 网站目录、数据库名、数据库账号密码
- SSL 证书文件和它的到期时间
- 定时任务:
crontab -l输出一份存下来 - 伪静态规则、rewrite 配置、防火墙放行端口
把这份清单写在一个 txt 里,后面每一步对着勾。
二、打全量备份,并且在本地留一份
# 打包网站文件
tar -zcvf /tmp/web_$(date +%F).tar.gz /www/wwwroot/你的站点
# 导出数据库(utf8mb4 一定要写)
mysqldump -uroot -p --single-transaction --default-character-set=utf8mb4 数据库名 > /tmp/db.sql
打包完下载到本地或传到对象存储。别只留在服务器上——别问我是怎么知道的。
三、新服务器先把环境跑通,别急着切 DNS
新机上装好同版本环境、建好站点、导入数据之前,先做一件事:改本地电脑的 hosts 文件,把你的域名指向新服务器 IP。
这样你访问域名时,走的其实是新机器,而线上用户还在访问旧机器。网站能不能打开、后台能不能登录、图片能不能显示,在这里一次性验证完。这一步能省掉 90% 的“切过去才发现有问题”的尴尬。
四、传文件 + 导数据库
传文件推荐 rsync 而不是 scp,断了能续传:
rsync -avzP -e "ssh -p 22" /www/wwwroot/你的站点 root@新服务器IP:/www/wwwroot/
导入数据库:
mysql -uroot -p --default-character-set=utf8mb4 数据库名 < db.sql
然后三件收尾的事,少一件都出事:
- 改配置文件里的数据库地址/账号/密码、站点域名
- 目录权限:
chown -R www:www /www/wwwroot/你的站点 - 把 SSL 证书重新部署一遍,
https单独测
站点多的,可以用宝塔的“一键迁移”插件,本质也是 rsync + 数据库导出,但记得迁移完自己抽查几个页面。
五、切解析,然后留观察期
提前一天把域名 TTL 调到 300 秒,切换时几分钟就全网生效。改完 A 记录,观察 24–48 小时,确认访问正常、日志没报错、邮件/接口都通,旧服务器至少再留 3–7 天,别当天就退掉。
新手最容易犯的三个错
- 字符集不统一。导出用 utf8mb4,导入也得指定 utf8mb4,否则中文全变问号,还以为是文件损坏。
- 忘了 SSL 证书和定时任务。切过去 https 报红、自动备份脚本悄悄停了,一周后才发现没备份。
- 没有回滚方案。旧机器说关就关,DNS 又改不回来。记住:旧机器是你的“后悔药”,一定要留够时间。
迁移目的地怎么选
如果你正打算顺便换一台机器,可以看看沐雨云服务器(https://www.myyvps.com)。我自己比较看重它这几点:高防云服务器单机带 50–200G DDoS/CC 防御,被打的时候不用临时抱佛脚;香港/美国/日本免备案 VPS,外贸站和博客省掉备案周期;线路走 BGP/CN2,国内访问延迟稳定;全系纯 SSD,数据库导入导出快不少。价格上 2 核 2G 轻量云 12.8 元/月起,支持支付宝、微信付款,个人博客、电商站、游戏服务器、外贸独立站都能覆盖。
最后回顾一遍要点
- 动手前列清单,记下所有软件版本
- 备份要在本地留一份,别只放服务器上
- 新机先用 hosts 本地验证,再切 DNS
- rsync 传文件,mysqldump 记得 utf8mb4
- SSL 证书、定时任务、目录权限,一个都别漏
- 旧服务器留 3–7 天,给自己留条退路
按这个流程走,一次迁移大概 1–2 小时就能搞定,剩下的就是盯两天日志。祝搬家顺利,别再凌晨三点还在改解析。



这一切,似未曾拥有