Lo facevo solo qualche anno fa. (modifica: con VMWare in esecuzione su host CentOS, non ESXi, per ammissione)
Ogni notte avevo uno script che sospendeva una VM, risincronizzava i file dal disco al server di backup e quindi riavviava le VM. Ha funzionato abbastanza bene tranne ...
Rsync non funziona molto bene con un file da 2 GB.
Non è perché rsync non è brillante, ma più che ogni file vmdk da 2 GB cambia in modi molto opachi per rsync, anche piccole modifiche al filesystem incluso producono cambiamenti nel vmdk (o in tutti i vmdks per qualche motivo) di cui ho incolpato Windows, deframmentando automaticamente o comunque facendo tutte le altre cose che fanno, non importa se stai eseguendo un sistema reale, ma mostrati quando stai provando a risincronizzare una VM!
Penso che il meccanismo rsync per rilevare le modifiche non funzioni molto bene su un file da 2 GB, mentre abbastanza spesso ha saltato blocchi di avvio di vmdk, una volta che ha iniziato a trovare una differenza avrebbe semplicemente copiato il resto del file. Non so se questo è un problema con rsync che non è in grado di rilevare una porzione spostata di dati binari, o con una mancanza di memoria nel box sorgente, o se il vmdk è appena stato aggiornato. Non importa perché il risultato è stato lo stesso: la maggior parte dei vmdk è stata copiata.
Alla fine ho semplicemente copiato tutti i file modificati e li ho sovrascritti, usando ancora rsync. Ho anche avuto prestazioni migliori semplicemente sovrascrivendo il file di backup invece di consentire a rsync di copiare e sostituire ciò che era lì.
Neanche il nostro server di backup è stato il più veloce ed è arrivato al punto in cui durante la notte non è stato abbastanza lungo per eseguire il backup di tutte le VM in esecuzione.
Tuttavia, quando è stato necessario ripristinare una macchina virtuale, è stato davvero facile e ha funzionato magnificamente.