Seite 1 von 1

Meine Batch für das Backup von VMs (VMware Server 2.x)

Verfasst: 16.04.2010, 14:28
von TSCH
Hallo,

möchte an dieser Stelle meine Batchdatei veröffentlichen und um Eure Verbesserungsvorschläge und Kommentare bitten.

************************************************************************

@echo off

:: universelle Batch für VM-Robocopy-Backups unter VMware Server 2.x
:: Herunterfahren mit Option soft (VMTools müssen in der VM installiert sein)
:: Stand 2010-03-16
:: Definition der Variablen
:: Übergabe von nvmdir, nvm, nvmx und sichnr
:: Beispiel: vmbackup _PROD TEST test.vmx -1
:: Wenn nur einfache Sicherung, kann sichnr leer bleiben
:: !!! Groß-/Kleinschreibung beachten bei Datastore und VMX-Datei !!! => generell in Großbuchstaben

set USER=admin
set PASS=XXX

set VMLW=D:
set NVMDIR=%1
set NVM=%2
set NVMX=%3
set SICHNR=%4

set DATASTORE=[VM] %NVMDIR%

set copyLW=\\BACKUP\vm-backup



:: Sicherheitschecks

:: Ist der Backup-Server überhaupt erreichbar ?
ping BACKUP
if errorlevel=1 goto backupoff

:: VMX-Datei vorhanden ?
if not exist %VMLW%\VM\%NVMDIR%\%NVM%\%NVMX% goto errhost


:: VM gestartet ?
if not exist %VMLW%\VM\%NVMDIR%\%NVM%\*.vmem goto vmoff


:: und ACTION

:: ACHTUNG: sind in der VM keine VMTools installiert geht die Option "soft" nicht
vmrun -T server -h https://127.0.0.1:8333/sdk -u %USER% -p %PASS% stop "%DATASTORE%/%NVM%/%NVMX%" soft
::vmrun -T server -h https://127.0.0.1:8333/sdk -u %USER% -p %PASS% stop "%DATASTORE%/%NVM%/%NVMX%"

ping -n 60 localhost > nul

robocopy "%VMLW%\VM\%NVMDIR%\%NVM%" "%COPYLW%\VM2\%NVMDIR%\%NVM%%SICHNR%" /MIR /NP /ZB /R:5 /TEE /Log:"%COPYLW%\LOG\VM2_%NVM%%SICHNR%.txt"

if errorlevel 16 (echo !!! SCHWERER FEHLER !!! > elv.txt
blat elv.txt -to tsch@sagichnich.com -subject %NVM%
goto end)
if errorlevel 8 (echo !! Fehlerhafte Kopien !! > elv.txt
blat elv.txt -to tsch@sagichnich.com -subject %NVM%
goto end)


:: Für Testzwecke, Mail ob Sicherung OK
echo Sicherung OK > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.com -subject "Sicherung %NVM% (VM 2.x) OK"


call vmrun -T server -u %USER% -p %PASS% -h https://127.0.0.1:8333/sdk start "%DATASTORE%/%NVM%/%NVMX%"
goto end

:vmoff
echo VM war ausgeschaltet > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.com -subject "%NVM% war ausgeschaltet"
goto end

:backupoff
echo Backup-Medium nicht erreichbar > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.com -subject "%NVM% Backup-LW nicht gefunden"
goto end

:errhost
echo VMX-Datei nicht gefunden > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.com -subject "%NVM% VMX-Datei?"

:end

************************************************************************

Zum Einsatz kommen in der o.g. Batch-Datei die beiden Freeware-Tools ROBOCOPY und BLAT (verschicken von Mails).

Verfasst: 16.04.2010, 15:12
von ideFix
Ich finde es super das du deine Arbeit der Community zur Verfügung stellst.

Ich selber habe kein VMware Server, trotzdem ist mir Kleinigkeiten aufgefallen:

1. Programmaufruf
Mit welchen Paramtern muss die Batch aufgerufen werden (s. 2.)

2. Erläuterung Variablen
Was steht für was?

set VMLW=D:
set NVMDIR=%1
set NVM=%2
set NVMX=%3
set NNAGIOS=%4
set DOWNTIME=%5
set SICHNR=%6

3. BLAT muss vorher konfiguriert werden.

Schönes WE! :D

Verfasst: 26.04.2010, 15:55
von TSCH
Der Aufruf der Batch-Datei (vmbackup.bat) erfolgt, wie in den Remarks (s.o.) beschrieben.

Folgendes Beispiel soll den Aufruf veranschaulichen:

D:\VM\_PROD\TEST\test.vmx (hier liegt die Beispiel-VM)

(ich habe immer ein eigenes Verzeichnis _PROD für produktive VM's)

=> als Datastore ist VM in D:\VM konfiguriert

Aufruf: vmbackup _PROD TEST test.vmx -1

Die VM im Verzeichnis D:\VM\_PROD\TEST wird gesichert und anschließend wieder hochgefahren.

unknown file suffix

Verfasst: 06.10.2010, 21:35
von alphasix
Hallo TSCH,

super Script habe aber ein Problem bekomme gleich nach dem Ping Can`t open VM:
[standart] VMs /Server1 /Server1.vmx unknown file suffix.

Mein Storage hat den Namen standart die VM liegt in VMs\Server1.

Betriebssytem ist Windows 2008, der Aufruf erfolgt aus einer cmd wie folgt:
call vmbackup VMs Server1 Server1.vmx.
Liegt sicher nicht am Script aber vielleicht hat jemand eine Idee.

vielen Dank
Alphasix