本文档适用于将大型网站文件(数十GB至数百GB)从旧服务器迁移至新服务器的场景。通过 SSH 公钥认证和 Rsync 断点续传功能,实现安全、高效、可中断恢复的数据迁移。
## 核心优势
- **断点续传**:迁移中断后可继续,无需重新开始
- **增量同步**:仅传输变化的部分,节省时间带宽
- **带宽控制**:可限制传输速度,不影响业务运行
- **数据校验**:支持文件内容校验,确保一致性
## 操作概览
1. **配置免密登录**:新服务器生成密钥,授权访问旧服务器
2. **执行数据迁移**:使用 Rsync 从旧服务器拉取文件到新服务器
3. **验证迁移结果**:比对文件大小、数量,确认网站可用性
## 适用场景
- 跨服务器迁移网站文件
- 服务器到期更换
- 数据中心迁移
- 大型文件异地备份
## 预估耗时
- 配置免密:5-10分钟
- 数据迁移:取决于文件大小和带宽限制
第一步:数据迁移前的 SSH 公钥认证配置
1、安装 rsync,分别在两台服务器上执行以下命令确认是否已安装。如果未安装,命令也会自动完成安装。
# 适用于 CentOS 系统
sudo yum install -y rsync
2、登录新服务器,执行以下命令生成 RSA 4096 位密钥对,私钥不设密码(方便自动化;若需更高安全性可自行设置密码,但每次操作需手动输入或使用 ssh-agent)。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
注意:如果之前已有密钥对且想保留,请跳过此步,直接使用现有公钥。
3、将新服务器的公钥复制到旧服务器
这一步将新服务器的公钥内容添加到旧服务器的 ~/.ssh/authorized_keys 文件中,使旧服务器信任新服务器。
使用 ssh-copy-id方案,在新服务器上执行:ssh-copy-id root@旧服务器IP
系统会提示输入旧服务器的 root 密码(仅此一次)。成功后,公钥会自动追加到旧服务器的 ~/.ssh/authorized_keys,并设置正确的权限(600)。
4、在新服务器上测试能否无密码登录旧服务器:
ssh root@旧服务器IP
如果配置正确,会直接登录而无需输入密码。第一次连接时可能提示确认主机指纹,输入 yes 即可。
第二步:使用rsync开始数据迁移
1、在新服务器上输入命令,创建存放迁移文件的文件夹:mkdir -p /wwwroot/www/www_iyibai_com/
www_iyibai_com文件夹名称为您的站点文件夹名称,名称仅供参考。
2、可以使用 screen 让命令在后台稳定执行,避免 SSH 会话断开导致中断。
# 安装 screen(如果未安装)
yum install -y screen
# 创建会话
screen -S rsync_migrate

3、在新服务器上执行命令,使用公网 IP 进行 rsync:
rsync -avP --partial --bwlimit=4096 root@旧服务器IP:/wwwroot/www/www_iyibai_com/ /wwwroot/www/www_iyibai_com/
之后可以用 screen -r rsync_migrate 重新附着查看进度。
bwlimit=4096,为rsync占用服务器带宽,4096为4M,这个需要根据实际情况设置。

4、迁移完成之后在新服务器上执行:
# 查看目标目录总大小和文件数量
du -sh /wwwroot/www/www_iyibai_com/
ls -la /wwwroot/www/www_iyibai_com/ | wc -l
检查目标目录的文件数量和总大小,与源服务器进行对比。
5、如果仍有部分文件缺失或不确定一致性,可以强制 rsync 进行校验和比对,确保文件内容完全一致(会消耗更多时间和资源):
rsync -avPc --partial --bwlimit=4096 root@旧服务器IP:/wwwroot/www/www_iyibai_com/ /wwwroot/www/www_iyibai_com/
第三步:设置站点文件权限和迁移数据库
1、可以通过输入命令设置www_iyibai_com文件夹仅限为www/755,或者登录宝塔点击文件夹权限直接设置
chown -R www:www /wwwroot/www/www_iyibai_com/
chmod -R 755 /wwwroot/www/www_iyibai_com/

2、数据库流程相对简单,登录服务器直接操作即可。