468x60

sabato 2 gennaio 2010

VMWare Server batch backup script

Ecco uno script batch per effettuare il backup di macchine virtuali VMware Server su Host Windows. La procedura si occupa 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.

N.B.: la macchina virtuale della quale effettuerete il backup deve eseguire il software VMware Tools.
@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 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

Buon lavoro!

Nessun commento:

Posta un commento

468x60

Cerca su Google

Cerca nel Blog con Google