VPS完整迁移技术求助:源镜像无法安装至目标VPS且迁移步骤存疑
VPS完整迁移技术求助:源镜像无法安装至目标VPS且迁移步骤存疑
兄弟,我之前也碰到过这种服务商卡镜像安装的糟心事,太闹心了!给你捋几个靠谱的替代方案,再把你说的步骤3-5拆成具体可操作的细节,应该能帮你搞定全量迁移(包括用户、数据库、系统配置啥的都能完整搬过去):
方案一:绕开镜像,直接用rsync做全量系统同步(最稳妥)
如果服务商不让装镜像,咱直接跳过镜像,从源VPS把整个系统同步到目标VPS就行,步骤如下:
- 准备工作:
- 目标VPS先进入救援模式(大部分服务商都提供这个功能),把目标系统磁盘挂载到
/mnt/target目录 - 源VPS确保能通过SSH连接,并且安装了rsync(没装的话用
apt install rsync或yum install rsync装一下)
- 目标VPS先进入救援模式(大部分服务商都提供这个功能),把目标系统磁盘挂载到
- 执行同步:
在目标VPS的救援模式下,运行这条rsync命令(把source-ip换成源VPS的IP):
解释下参数:rsync -aAXv root@source-ip:/ /mnt/target/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}-a保留权限、所有者等属性,-A保留ACL,-X保留扩展属性,-v显示同步进度;排除的都是虚拟/临时文件系统,这些不用同步 - 修复系统引导和配置:
- 先绑定必要的虚拟文件系统,然后chroot到目标系统:
mount --bind /dev /mnt/target/dev mount --bind /proc /mnt/target/proc mount --bind /sys /mnt/target/sys chroot /mnt/target - 修复GRUB引导:
- Ubuntu/Debian系:
update-grub && grub-install /dev/sda(/dev/sda是目标VPS的磁盘,根据实际情况改,比如/dev/vda) - CentOS/RHEL系:
grub2-mkconfig -o /boot/grub2/grub.cfg && grub2-install /dev/sda
- Ubuntu/Debian系:
- 修改网络配置:把目标系统里的IP、网关等改成新VPS的信息(比如Ubuntu看
/etc/netplan,CentOS看/etc/sysconfig/network-scripts) - 退出chroot,卸载所有挂载的目录,重启目标VPS就搞定了
- 先绑定必要的虚拟文件系统,然后chroot到目标系统:
方案二:利用现有镜像,转换成可挂载格式后同步
如果你非要用手里的源镜像,那可以把镜像传到目标VPS,挂载后再同步内容,对应你说的步骤3-5,我拆成具体操作:
步骤3:挂载镜像文件
- 先把镜像文件传到目标VPS的救援模式环境里(比如用scp或者服务商的文件上传功能)
- 检查镜像格式:
file your-image-file.img,看是raw还是qcow2格式- 如果是raw格式:
losetup -fP your-image-file.img # 绑定循环设备 lsblk # 找到对应的循环设备,比如/dev/loop0,以及它的分区(比如/dev/loop0p1) mount /dev/loop0p1 /mnt/source # 挂载系统分区到/mnt/source - 如果是qcow2格式:
modprobe nbd # 加载nbd模块 qemu-nbd -c /dev/nbd0 your-image-file.qcow2 # 绑定nbd设备 lsblk # 找到分区,比如/dev/nbd0p1 mount /dev/nbd0p1 /mnt/source
- 如果是raw格式:
步骤4:同步镜像内的系统到目标磁盘
和方案一的同步命令一样,把源路径换成/mnt/source:
rsync -aAXv /mnt/source/ /mnt/target/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
步骤5:修复引导和系统配置
这部分和方案一的步骤3完全一样,chroot进去修复GRUB、修改网络配置,然后重启就行。
一些踩过坑的注意事项
- 迁移前一定要备份源VPS的重要数据,比如数据库单独导出一份,避免操作失误丢数据
- 源和目标VPS的系统架构要一致(比如都是x86_64),不然迁移后系统可能启动不了
- 如果同步速度慢,可以给rsync加
-z参数启用压缩,或者加--progress实时看进度
备注:内容来源于stack exchange,提问作者Lokilife
相关产品推荐
相关产品推荐

