I've seen a lot people doing the migration using scp, ovftool etc. However, there are a much faster way to do this. In my opinion it's also easier than most other methods. Also the downtime can be made to be as short as a single reboot.
Only thing you need is a nfs storage that you can share between proxmox and vmware. To make sure that the two systems don't interfere with each other create two shares on the same filesystem.
Use a filesystem mounted on /export/nfs/migrate, Create two folders /export/nfs/migrate/{vmware,pve}. Create two nfs exports /export/nfs/migrate/vmware and /export/nfs/migrate/pve . And mount the two different mounts on the corresponding hypervisor.
Create a new vm in proxmox with the same amount of cpu, memory, nics and disks as the source. Also remember to select the same type of bios mode. For windows you'll want to use VMWare PVSCSI in most of the cases. For Linux you can usually use VirtIO SCSI, but you might need to make sure the virtio driver is included in the initrd image before you migrate. Always use vmdk format for the disks, we'll take care of converting them later.
When the vm is created, don't start the vm, but log into your nas with ssh, and go into /export/nfs/migrate/pve/images/<VMID>
In this directory you'll find at least one vmdk file. The naming of this files are vm-<VMID>-disk-<DISKID>.vmdk. Delete these files.
Now in vmware, remove any snapshots on the vm, and migrate the vm to the nfs storage. Make sure that your backup software don't create any snapshots of the vm while you work on it.
When the migration to the nfs storage is completed, go back to your nas shell. In the same folder as before we'll create some links.
First let's link all flat and ctl vmdk files into the <VMID> folder ln ../../../vmware/<vmname>/*{ctl,flat}.vmdk .
Second let's link all vmdk config files in to the corresponding <DISKID> ln ../../../vmware/<vmname>/<firstdisk>.vmdk vm-<VMID>-disk-<DISKID>.vmdk
At this point we're ready to switch the vm over, and can power the vm down in VMWare. When the vm is off in VMWare, powert the vm on in Proxmox.
Make sure the vm is running ok in Proxmox. Network interfaces might get new id's, so you might need to do some changes to network setup, but that should be all you need to do inside a vm.
If the vm is running ok, let's move off the migration nas and at the same time migrate the disks from vmdk to eithe raw or qcow depending on the end storage. The migration is done by moving the disks. For some storage you can select format, if so, use qcow2, if you use zfs, raw will be your only choice. Select Delete source.
After the disks have been migrated we need to remove the /export/nfs/migrate/pve/images/<VMID> folder from the nas since we've linked in the ctl and flat files wihch proxmox won't migrate.
For windows systems you probably will want to migrate from the pvscsi controller to a virtio controller. This https://forum.proxmox.com/threads/how-do-i-convert-an-ide-disk-to-virtio.46394/#post-418862 forum post outlines a method that can be used.
Only thing you need is a nfs storage that you can share between proxmox and vmware. To make sure that the two systems don't interfere with each other create two shares on the same filesystem.
Use a filesystem mounted on /export/nfs/migrate, Create two folders /export/nfs/migrate/{vmware,pve}. Create two nfs exports /export/nfs/migrate/vmware and /export/nfs/migrate/pve . And mount the two different mounts on the corresponding hypervisor.
Create a new vm in proxmox with the same amount of cpu, memory, nics and disks as the source. Also remember to select the same type of bios mode. For windows you'll want to use VMWare PVSCSI in most of the cases. For Linux you can usually use VirtIO SCSI, but you might need to make sure the virtio driver is included in the initrd image before you migrate. Always use vmdk format for the disks, we'll take care of converting them later.
When the vm is created, don't start the vm, but log into your nas with ssh, and go into /export/nfs/migrate/pve/images/<VMID>
In this directory you'll find at least one vmdk file. The naming of this files are vm-<VMID>-disk-<DISKID>.vmdk. Delete these files.
Now in vmware, remove any snapshots on the vm, and migrate the vm to the nfs storage. Make sure that your backup software don't create any snapshots of the vm while you work on it.
When the migration to the nfs storage is completed, go back to your nas shell. In the same folder as before we'll create some links.
First let's link all flat and ctl vmdk files into the <VMID> folder ln ../../../vmware/<vmname>/*{ctl,flat}.vmdk .
Second let's link all vmdk config files in to the corresponding <DISKID> ln ../../../vmware/<vmname>/<firstdisk>.vmdk vm-<VMID>-disk-<DISKID>.vmdk
At this point we're ready to switch the vm over, and can power the vm down in VMWare. When the vm is off in VMWare, powert the vm on in Proxmox.
Make sure the vm is running ok in Proxmox. Network interfaces might get new id's, so you might need to do some changes to network setup, but that should be all you need to do inside a vm.
If the vm is running ok, let's move off the migration nas and at the same time migrate the disks from vmdk to eithe raw or qcow depending on the end storage. The migration is done by moving the disks. For some storage you can select format, if so, use qcow2, if you use zfs, raw will be your only choice. Select Delete source.
After the disks have been migrated we need to remove the /export/nfs/migrate/pve/images/<VMID> folder from the nas since we've linked in the ctl and flat files wihch proxmox won't migrate.
For windows systems you probably will want to migrate from the pvscsi controller to a virtio controller. This https://forum.proxmox.com/threads/how-do-i-convert-an-ide-disk-to-virtio.46394/#post-418862 forum post outlines a method that can be used.