VMware Server “Quick and Dirty” batch backup script
Di seguito potete trovare uno script batch che utilizzo per fare il backup di alcune macchine virtuali VMware Server su Host Windows. Si tratta di una procedura molto semplice ma comunque funzionale: si occupa sostanzialmente di eseguire lo spegnimento di una macchina virtuale, copiarla e riavviarla; tutti i passaggi vengono memorizzati all'interno di un file di log.
Ammesso che la macchina virtuale possa sopportare un temporaneo downtime, il metodo più sicuro per eseguirne con successo il backup è quello di spegnerla completamente per poi copiarne il disco virtuale (vmdk). Infatti, nel momento in cui le VM sono in esecuzione, VMware memorizza moltissime informazioni all'interno di una memoria virtuale che verrà completamente trasferita sul disco soltanto in fase di spegnimento.
Scaricate il file .zip contenete il batch script di cui sotto e, dopo averne impostato le variabili (la spiegazione si trova alla fine di questo post), utilizzatelo come operazione pianificata
IMPORTANTE: la macchina virtuale della quale effettuerete il backup deve eseguire il software VMware Tools.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | @echo off rem --- Variables --------------------------------- set VMWAREINSTALLPATH=C:\Programmi\VMware\VMware Server set VMPATH=D:\VirtualMachines\Windows XP Professional set VMVMX=Windows XP Professional.vmx set BACKUPDESTINATION=c:\Virtual Machines set LOGFILE=c:\Virtual Machines\log.txt rem --------------------------------------------------- setlocal set PATH=%PATH%;%VMWAREINSTALLPATH% set VAR="%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" getstate echo Starting Backup Procedure on %date% at %time%... > "%LOGFILE%" :checkvmstatus echo Checking %VMVMX% VM status... >> "%LOGFILE%" FOR /F "tokens=3 delims= " %%R IN ('"%VAR%"') DO SET RESULT=%%R echo %VMVMX% VM status is "%RESULT%"... >> "%LOGFILE%" if "%RESULT%" EQU "on" goto poweroffvm if "%RESULT%" EQU "off" goto copyandrestartvm goto quit :poweroffvm echo Stopping %VMVMX% VM... >> "%LOGFILE%" "%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" stop >> "%LOGFILE%" rem echo Waiting 60 seconds... >> "%LOGFILE%" rem sleep -m 60000 goto checkvmstatus :copyandrestartvm echo Starting %VMVMX% VM Backup... >> "%LOGFILE%" xcopy "%VMPATH%"\*.* "%BACKUPDESTINATION%"\*.* /E /C /I /F /H /Y >> "%LOGFILE%" echo %VMVMX% VM Backup finished... restarting %VMVMX% VM... >> "%LOGFILE%" "%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" start >> "%LOGFILE%" FOR /F "tokens=3 delims= " %%R IN ('"%VAR%"') DO SET RESULT=%%R echo %VMVMX% VM status is now "%RESULT%"... >> "%LOGFILE%" goto quit :quit echo Quitting Backup Procedure on %date% at %time% ... >> "%LOGFILE%" exit |
Le variabili da impostare, come potete vedere, sono:
- set VMWAREINSTALLPATH=C:\Programmi\VMware\VMware Server - la cartella di installazione di VMware Server
- set VMPATH=D:\VirtualMachines\Windows XP Professional - la cartella in cui si trovano i files della macchina virtuale da copiare
- set VMVMX=Windows XP Professional.vmx - il nome del file di configurazione (vmx) della macchina virtuale
- set BACKUPDESTINATION=c:\Virtual Machines - la cartella in cui verranno copiati i dati ovvero la destinazione del backup, può essere anche un percorso di rete UNC
- set LOGFILE=c:\Virtual Machines\log.txt - il file di log in cui verrà memorizzato lo stato della procedura di backup, può essere anche un percorso di rete UNC
Autore
Mirko Iodice
mirko -at- notageek (.dot) it
Suggeriti dall'autore
Print This • Email this • Twit This! • Add to del.icio.us • Share on Facebook • Digg This! • Stumble It! • AddThis! • Share on Segnalo Alice • Share on OKNotizie
6 Marzo 2008 alle 11:59
Ciao Mirko,
lo script funziona anche su macchine virtuali linux?
6 Marzo 2008 alle 15:42
@ Claudio
Sì, purché vi sia il software VMware Tools installato sulla macchina virtuale Linux.
Mi sono accorto soltanto ora che il codice di questo script non funziona se lo copiate e incollate poiché WordPress ne interrompe le righe andando a capo, per questo motivo ho pubblicato un link per il download... lo trovate all'inizio del post.
Mi scuso.
10 Marzo 2008 alle 20:55
Ciao, adesso lo provo, se funziona ti devo una cena, lo stavo giusto cercando.
Grazie mille
Gio
18 Dicembre 2009 alle 22:48
Ma il Guest OS della VM che si vuole backuppare non deve PRIMA effettuare il proprio shutdown (es. per VM Linux: "#shutdown -h now")?
19 Dicembre 2009 alle 8:53
@ David
Se sulla macchina virtuale sono installati i vmware tools non c'è bisogno di spegnerla prima, ci pensa questo script con il comando a riga 26:
Tenete presente che questo script l'ho pubblicato nel febbraio 2008 ed è compatibile con VMWare Server 1.0... andrebbe aggiornato se volete la compatibilità con VMWare 2.0.