Linux服务器迁移数据保姆级教程:从备份到恢复全流

一、迁移前必须做的准备工作
无论你是从旧服务器搬到新服务器,还是跨机房迁移,Linux服务器迁移数据之前有两件事必须先确认:旧服务器上的数据有哪些、新服务器的环境是否就绪。
1. 数据清单梳理
- 网站程序文件(一般放在
/www/wwwroot或/var/www/html) - 数据库文件(MySQL/MariaDB 的
data目录或直接导出SQL) - 配置文件(Nginx、Apache、PHP等,通常在
/etc/nginx、/etc/httpd) - 证书、密钥、.env 等敏感文件
2. 新服务器环境检查
- 确保新服务器已安装相同或兼容的操作系统版本(如 CentOS 7 → CentOS 7 / Rocky Linux 8)
- 安装必要的软件:
apt update && apt install -y rsync ssh或yum install -y rsync openssh-clients - 宝塔用户:在新服务器上安装宝塔面板,并创建与旧服务器一致的网站和数据库空壳(先不传数据)
二、核心数据迁移步骤
推荐用 rsync 配合 SSH 密钥登录,安全且支持断点续传。
1. 生成SSH密钥并互信(免密登录)
在旧服务器上执行:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
ssh-copy-id root@新服务器IP测试能否免密登录:ssh root@新服务器IP,不需要输入密码即成功。
2. 迁移网站程序文件
假设数据在 /www/wwwroot/your_site,新服务器目标路径相同:
rsync -avz --progress --delete /www/wwwroot/your_site/ root@新服务器IP:/www/wwwroot/your_site/参数说明:-a 保留权限和时间戳,-v 显示详情,-z 压缩传输,--delete 同步删除多余文件。
3. 迁移MySQL数据库
宝塔面板操作路径:旧服务器宝塔 → 数据库 → 选择数据库 → 导出,将.sql文件下载到本地。
或用命令行导出:
mysqldump -u root -p your_database > /tmp/your_database.sql将SQL文件传到新服务器:
rsync -avz /tmp/your_database.sql root@新服务器IP:/tmp/在新服务器上导入:
mysql -u root -p your_database < /tmp/your_database.sql注意:如果数据库名、用户不同,需要提前创建好对应库和用户。
4. 迁移配置文件
常用配置文件路径:
- Nginx:
/etc/nginx/conf.d/或/www/server/nginx/conf/(宝塔) - PHP:
/etc/php.ini或/www/server/php/版本/etc/php.ini - SSL证书:
/etc/ssl/或/www/server/panel/vhost/ssl/
直接用rsync同步到新服务器对应位置,注意路径差异。
三、高频问题与避坑指南
1. 传输中断怎么办?
rsync支持断点续传,重新执行一次即可,加上 --partial 保留已传部分。
2. 数据库字符集乱码
导出时指定字符集:mysqldump --default-character-set=utf8mb4 -u root -p your_database > dump.sql
导入前检查新服务器数据库字符集是否为 utf8mb4。
3. 无法SSH连接新服务器
检查新服务器防火墙:
ufw allow 22 # Ubuntu
firewall-cmd --add-service=ssh --permanent # CentOS
firewall-cmd --reload如果使用云服务商,还需在安全组放行22端口。
4. 网站访问权限报错401或403
文件权限不一致:迁移后重置所有者:
chown -R www:www /www/wwwroot/your_site # 以宝塔为例
find /www/wwwroot/your_site -type d -exec chmod 755 {} \;
find /www/wwwroot/your_site -type f -exec chmod 644 {} \;四、迁移后的效果验证
1. 文件完整性检查
在旧服务器和新服务器上分别运行:
ls -lh /www/wwwroot/your_site | wc -l
du -sh /www/wwwroot/your_site对比文件数量和总大小,基本一致即可。
2. 数据库数据检查
登录新服务器数据库,查看表数量:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'your_database';与旧服务器对比。
3. 网站访问测试
- 用浏览器访问新服务器IP或已解析的域名
- 使用
curl -I http://新服务器IP查看HTTP状态码是否200 - 测试登录、查询等动态功能是否正常
4. 日志排查
查看新服务器错误日志:
tail -f /var/log/nginx/error.log # 或宝塔面板的日志路径如果出现异常,根据报错回看配置或权限。
五、最后的叮嘱
Linux服务器迁移数据不是一次性的复制粘贴,每一步都要做验证。
建议先迁移一个测试站点练手,再处理正式业务。
宝塔用户可以利用宝塔自带的“一键迁移”插件(限同版本环境),但手动迁移能让你更清楚每个文件的作用。
遇到异常别慌,优先检查权限、路径和防火墙。
完成迁移后不要立刻删除旧服务器数据,至少保留一周作为回退方案。