对于个人站长而言,将数百 GB 的大容量附件或媒体文件从一台旧的 VPS 迁移到新的高性能 VPS 是常见的操作。面对如此庞大的数据量,我们追求的重点是传输的“速度”和“稳定性”。
在众多工具中,我们强烈推荐使用 rsync。
为什么选择 rsync?
rsync(remote sync)是 Linux 和 Unix 系统中最强大的文件同步工具。它通过远程 Shell(通常是 SSH)进行数据传输,具有以下关键优势,使其成为大文件迁移的首选:
- 断点续传(稳定性): 使用 -P 或 –partial –progress 参数,如果传输中断(例如网络瞬断),rsync 可以从中断的地方继续传输,而不是从头开始。
- 增量传输(速度): rsync 只传输文件发生变化的部分,而不是整个文件。虽然第一次传输是全量传输,但这个机制保证了它能高效地处理后续的重试和校验。
- 安全性: rsync 默认通过 SSH 隧道传输数据,确保了数据在公网传输过程中的加密和安全。
实施步骤:使用 rsync 进行数据迁移
假设我们有以下环境:
- 旧 VPS (Source): IP 地址 192.168.1.10,附件路径 /var/www/old_site/attachments/。
- 新 VPS (Destination): IP 地址 203.0.113.20,目标路径 /var/www/new_site/attachments/。
我们推荐在新 VPS 上执行命令,从旧 VPS 拉取(Pull)数据,这样操作更直观,且更容易管理目标路径。
步骤 1:在新 VPS 上准备目标目录
确保新 VPS 上目标目录已经创建:
mkdir -p /var/www/new_site/attachments/
步骤 2:执行 rsync 传输命令
登录到新 VPS,执行以下命令:
rsync -avzP -e ssh user@192.168.1.10:/var/www/old_site/attachments/ /var/www/new_site/attachments/
命令参数解释:
| 参数 | 含义 | 作用 |
|---|---|---|
| -a | Archive mode | 归档模式,保留权限、时间戳、所有者、组等所有属性,非常重要。 |
| -v | Verbose | 显示详细的传输过程。 |
| -z | Compress | 传输过程中启用压缩。对于附件(如文本、代码)能显著加速,但对于已压缩的文件(如图片、视频)效果不明显。 |
| -P | Partial & Progress | 等同于 –partial –progress。启用断点续传,并显示传输进度。 |
| -e ssh | Remote Shell | 指定使用 SSH 作为远程传输协议,保证安全。 |
| user@IP: | 远程连接信息 | 替换为你在旧 VPS 上的用户名和 IP。 |
执行命令后,系统会提示你输入旧 VPS 用户的 SSH 密码。
步骤 3:处理传输中断(断点续传)
如果传输过程中网络中断,你只需等待网络恢复,然后再次运行完全相同的 rsync 命令:
rsync -avzP -e ssh user@192.168.1.10:/var/www/old_site/attachments/ /var/www/new_site/attachments/
由于使用了 -P 参数,rsync 会自动检测目标目录下已传输的文件块,并仅传输未完成或需要更新的部分,确保了数百 GB 迁移的稳定可靠性。
步骤 4:校验和最终同步
当 rsync 运行完成后,再次执行一次命令进行最终校验(也称为 Dry Run 或最终同步)。
你可以运行一次不带 -P 的标准 rsync 命令,确保所有文件属性和内容都已同步:
rsync -avz -e ssh user@192.168.1.10:/var/www/old_site/attachments/ /var/www/new_site/attachments/
如果这次命令迅速完成,且只显示少量或没有文件传输,则代表迁移成功。
高级优化:提高传输速度
如果你的网络带宽非常优秀,但 CPU 资源有限,你可以考虑关闭压缩 -z,因为压缩和解压本身会消耗 CPU 资源。
如果你确认文件内容不需要改变,只想单纯复制,可以加入 –size-only 参数,让 rsync 只比较文件大小,跳过时间戳和内容校验,这能提高速度,但会牺牲一定的准确性(不推荐用于第一次全量传输)。
汤不热吧