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

Post Metadata

Data
20 Febbraio 2008

Autore
Mirko

Categorie

5 commenti a “VMware Server “Quick and Dirty” batch backup script”




  1. Ciao Mirko,
    lo script funziona anche su macchine virtuali linux?

    Rispondi



  2. @ 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.

    Rispondi



  3. Ciao, adesso lo provo, se funziona ti devo una cena, lo stavo giusto cercando.
    Grazie mille
    Gio

    Rispondi



  4. Ma il Guest OS della VM che si vuole backuppare non deve PRIMA effettuare il proprio shutdown (es. per VM Linux: "#shutdown -h now")?

    Rispondi



    • @ 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:

      "%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" stop

      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.

      Rispondi



Lascia un commento