把VPS服务器里的虚拟机复制出来,核心是“先让磁盘一致,再导出配置和磁盘,最后传到目标位置恢复”,直接复制运行中的磁盘文件并不可靠,KVM用virsh dumpxml配合qemu-img转换最稳,VMware用OVF导出最省事。
先分清:你要复制的是VPS本身,还是VPS里的虚拟机
这个区别不搞清楚,后面容易白忙,VPS服务商卖给你的通常是一台KVM或VMware虚拟机,你登录进去只是用户,你能操作的是这台VPS内部,不是宿主机上的虚拟机文件。
- 复制整台VPS:走服务商控制台的快照、备份、自定义镜像导出,或者在VPS内部用dd打包系统盘再下载。
- 复制VPS里再跑的虚拟机:需要VPS支持嵌套虚拟化,检查命令:
egrep -c '(vmx|svm)' /proc/cpuinfo,返回值大于0才有硬件虚拟化;再看ls /dev/kvm是否存在,没有/dev/kvm,KVM虚拟机基本跑不起来。 - 只复制数据:用rsync、tar、数据库备份工具,比整机复制更轻。
行业共识认为,先确认虚拟化平台和权限,比急着敲复制命令更重要,服务商如果不给镜像导出权限,你只能在VPS内部做文件级备份。
服务商快照不等于可下载的虚拟机文件
多数云控制台的快照用于回滚和创建新实例,不直接提供qcow2、vmdk下载,要拿到虚拟机磁盘文件,得看服务商是否开放“镜像导出”或工单申请,近年来,部分厂商支持将自定义镜像导出到对象存储,但通常按存储和流量计费。
vps服务器虚拟机怎么复制到本地:三条主流路径
kvm虚拟机导出qcow2镜像教程:停机复制最稳
这是VPS里最常见的一类,假设虚拟机名叫vm1,宿主机有root权限。
- 查看虚拟机:
virsh list --all - 正常关机:
virsh shutdown vm1,再用virsh domstate vm1确认是shut off - 导出配置:
virsh dumpxml vm1 > /backup/vm1.xml - 找磁盘路径:
virsh domblklist vm1,通常落在/var/lib/libvirt/images/vm1.qcow2 - 压缩转换:
qemu-img convert -O qcow2 -c /var/lib/libvirt/images/vm1.qcow2 /backup/vm1-compressed.qcow2 - 下载到本地:
scp root@VPS_IP:/backup/vm1-compressed.qcow2 ./,大文件用rsync -avP断点续传 - 本地恢复:复制xml后改
<uuid>、<mac address>和磁盘路径,再virsh define vm1.xml;或者用virt-install --import --name vm1-copy --memory 2048 --vcpus 2 --disk /data/vm1-compressed.qcow2 --network network=default --noautoconsole
别忽略MAC地址和IP冲突,克隆出来的虚拟机如果和原机在同一网络,先改MAC、主机名和静态IP,数据库类虚拟机建议停机复制,业内专家指出,在线导出运行中的磁盘,若没有文件系统冻结或存储快照,数据库文件出现不一致的风险会明显上升。
VMware ESXi导出OVF/OVA:图形界面更省事
ESXi上的虚拟机,关机后在vSphere Client里选中虚拟机,选择“导出OVF模板”,把ova或ovf加vmdk下载下来,命令行可用ovftool vi://用户名@ESXi地址/vm1 /backup/vm1.ova,导入到VMware Workstation或另一台ESXi时,注意磁盘置备格式选厚置备还是精简置备,网络先选隔离网络再改。
VirtualBox与Hyper-V:桌面虚拟化这样导出
VirtualBox导出命令:VBoxManage export vm1 -o vm1.ova,Hyper-V用PowerShell:Export-VM -Name vm1 -Path D:\export,之后复制vhd/vhdx和配置文件,Windows VPS里操作Hyper-V,要确认当前账号在Hyper-V Administrators组。
vps上的虚拟机如何迁移到另一台服务器
克隆是留一份在原处,迁移是把虚拟机搬到新宿主机,导出是打包成文件,三者目标不同,命令也不一样。
| 方式 | 是否保留原机 | 典型场景 | 关键操作 |
|---|---|---|---|
| 克隆 | 保留 | 测试环境、备份副本 | virt-clone或复制磁盘改配置 |
| 导出 | 保留 | 下载到本地、跨平台归档 | qemu-img convert、OVF导出 |
| 迁移 | 通常不保留 | 换宿主机、机房搬迁 | virsh migrate或导出再导入 |
同平台且有共享存储时,KVM可以用virsh migrate --live vm1 qemu+ssh://root@目标机/system做在线迁移,没有共享存储,老老实实关机导出再导入,跨平台转换用qemu-img convert -O vmdk vm1.qcow2 vm1.vmdk或-O vhdx,Windows虚拟机跨平台要提前处理驱动,KVM的virtio磁盘驱动到VMware可能蓝屏,先装驱动或临时改用IDE/SATA控制器。
迁移后重置cloud-init:cloud-init clean,再清理machine-id和SSH host key,用virt-sysprep -a vm1.qcow2也能做一轮通用清理。
vps服务器虚拟机复制要多少钱
没有统一价,服务商快照通常按存储容量计费,下载镜像按公网流量计费,代维服务按工时或磁盘大小报价,多数情况下,磁盘越大、停机窗口越长,成本越高,自己用scp加压缩能省流量,但大磁盘下载时间长,跨境链路更明显。
云服务器虚拟机克隆需要注意什么
磁盘一致性与快照依赖
- 停机复制最稳,尤其是MySQL、PostgreSQL、Windows域控。
- 不能停机时,用存储快照或文件系统冻结:
fsfreeze -f /data,复制后fsfreeze -u /data。 - qcow2有快照链时,不要只复制增量文件,用
qemu-img convert合并成单文件。 - LVM卷可用
lvcreate -L 10G -s -n vm1-snap /dev/vg0/vm1做临时快照。
网络、授权与合规
- 改MAC、IP、主机名,避免和原机冲突。
- Windows授权和商业软件可能绑定硬件指纹,克隆后激活状态会变化。
- 镜像里可能含SSH私钥、数据库密码,传输用scp或rsync over SSH,别放公开链接。
- 检查安全组、防火墙、监控agent和时间同步。
据工信部公开的云计算相关统计,企业上云后的备份与迁移需求持续存在,但镜像导出能力因服务商而异,动手前先看控制台文档,能省不少工单时间。
vps服务器虚拟机复制常见问题Q&A
Q1:VPS服务商控制台的快照能直接下载成虚拟机文件吗?
多数不能直接下载,快照主要用于回滚和创建新实例,要拿到qcow2或vmdk,需要服务商提供镜像导出功能或工单申请,部分厂商支持导出到对象存储,再按流量计费下载。
Q2:复制运行中的虚拟机会不会一定损坏?
不一定,但风险存在,文件系统缓存和数据库事务未落盘时,复制出的磁盘可能不一致,停机、存储快照或fsfreeze是更稳妥的做法;只读文件服务器在线复制的风险相对低。
Q3:跨地区复制VPS虚拟机速度慢怎么办?
先压缩磁盘再传。qemu-img convert -c能压缩qcow2,rsync -avP --partial支持断点续传,磁盘越大、链路越远,耗时越长;跨境传输还要看服务商出口带宽和流量费用,整个流程的关键仍是磁盘一致性和恢复后的网络重置。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/795320.html


