在 ESXI web 页面导出较大虚拟机时,可能由于网络问题等多种原因,导致导出失败,耗时耗力。本篇介绍另一种成功率较高的方法
首先在这里下载自己操作系统对应的 ovftool

下载安装完成后,进入到 ovftool.exe 所在目录,用终端打开(或者打开命令行,cd 到该目录也 ok)
使用 ./ovftool.exe -v
查看安装是否完成

ESXI 命令行的 url 格式如下
vi://<user>:<password>@[ip]/<vm>
最前面的 vi
是 vmware 的协议名,尖括号中的都是可选参数,如果没有在 url 中指定用户名和密码,会在执行命令时弹出输入,下面给出几个例子
vi://192.168.0.1
vi://root:password@192.168.0.1
vi://root:password@192.168.0.1/vm1
当你的用户名或密码中有特殊字符时,可能导致 url 解析错误,有两种解决办法。一个是 url 编码,另一种是在弹出的输入框中输入,比如:
密码为 pass@word
, 就可以编码为 vi://root:pass%40word@192.168.0.1/vm1
。当然,在弹出的输入框中输入还是更简单的
→ casta@~/ovftool $ ./ovftool.exe vi://root:Admin123@192.168.0.1
Error: Found wrong kind of object (ResourcePool). Possible completions are:
135
Test_CentOS8
VMware vCenter Server
bcec
PE1
CE2
PC2
k8s_master
c05945-win10
j02769-win10
z05350
52-S7-FWNFV
FWNFVS7
当你知道要导出的虚拟机名字后,要先去 web 页面关掉虚拟机
使用 ./ovftool.exe vi://root:password@192.168.0.1/vm1
先查看虚拟机信息。如果没问题再导出。下面这种情况就是虚拟机没关
→ casta@~/ovftool $ ./ovftool.exe vi://root:Admin123@1192.168.0.1/vm1
Error: Message is: Received SOAP response fault from [<SSL(<io_obj p:0x000002586b26c6a8, h:840, <TCP '192.168.0.1 : 65459'>, <TCP '192.168.0.2 : 443'>>), /sdk>]: exportVm
Another task is already in progress.,
Fault cause: vim.fault.TaskInProgress
关掉之后,再次执行,虚拟机信息如下:
虚拟机信息
→ casta@~/ovftool $ ./ovftool.exe vi://root:Admin123@1192.168.0.1/vm1
OVF version: 1.0
VirtualApp: false
Name: vm1
Download Size: Unknown
Deployment Sizes:
Flat disks: 256.00 GB
Sparse disks: Unknown
(note: Source included files for which the file size is unknown)
Networks:
Name: VM NET3
Description: The VM NET3 network
Virtual Machines:
Name: vm1
Operating System: centos7_64guest
Virtual Hardware:
Families: vmx-14
Number of CPUs: 4
Cores per socket: automatic
Memory: 16.00 GB
Disks:
Index: 0
Instance ID: 11
Capacity: 256.00 GB
Disk Types: SCSI-VirtualSCSI
NICs:
Adapter Type: VmxNet3
Connection: VM NET3
Adapter Type: VmxNet3
Connection: VM NET3
References:
File: /243/VirtualAHCIController0:0
File: /243/ParaVirtualSCSIController0:0
File: /243/nvram
至此,虚拟机已经准备好到处。导出的命令格式如下
./ovftool.exe url filedir
其实就是上一步查看虚拟机信息的命令,后面加一个要导出的目录,例如
./ovftool.exe vi://root:password@192.168.0.1/vm1 ./export
该命令就会将 vm1 导出到当前目录下的 export 文件夹中,慢慢等待即可,最终效果如下
→ casta@~/ovftool $ ./ovftool.exe vi://root:Admin123@1192.168.0.1/vm1 ./export
Opening VI source: vi://root@10.136.48.111:443/vm1
Opening OVF target: ./export
Writing OVF package: ./export\vm1\vm1.ovf
Transfer Completed
Completed successfully