VMWare Backupscript mit VBScript
Verfasst: 06.12.2006, 08:55
Neue Version eingestellt: V0.9.5
Angeregt durch Saxa: The ultimate VBScript for VM backup on Windows hosts im VMTN habe ich das dortige Script übersetzt und etwas erweitert.
Neu ist die Unterstützung des Packers LZOP. Dieser komprimiert fast in "WireSpeed", so das die BAckupzeit erheblich verkürzt wird. Negativer Nebeneffekt: die Archive werden ca. 10-20% größer. Aber mir ist die Zeitersparniss wichtiger - und 6 Minuten Komprimierung statt 35 Minuten sind ein kleiner Unterschied ... wer möchte kann weiter 7Zip nutzen
Eine kleine Einschränkung hat meine Einbindung von LZOP aber - in den Verzeichnissen der VMs dürfen keine Unterverzeichnisse vorhanden sein - sonst wird das Komprimieren als vom Script als fehlerhaft gemeldet.
Neu ist auch die Möglichkeit alle VMs eines Servers zu sichern.
Es werden die registrierten VMs des Servers ausgelesen und nacheinander runtergefahren, kopiert, gestartet. sind alle Kopiert werden die Kopierten Files komprimiert.
So - genug palaver, hier isses:
' Version: 0.9.5
' Description: Das Script Stoppt die per Parameter übergebene virtual Maschine eines VMWare-Serves,
' erstellt eine Kopie der vm, Startet die vm wieder und komprimiert anschließend
' die Kopie der vm mit 7Zip. Ergebnisse der Prozedur werden per Mail versendet und ins Eventlog
' eingetragen
'
'Vorraussetzungen: Server: VMWare Server ab 1.0
' Windows 2003 Server
' Client: (Scriptausführender Rechner)
' ab Windows XPSP2 (getestet auf Windows XP SP2)
' VMCom-API (wird mit VMWare Console installiert, auch einzeln downloadbar)
' installiertes 7Zip
'
' Syntax: backup_vm.vbs
' Ohne Parameterübergabe werden die notwendigen Daten für das BAckup einer VM interaktiv abgefragt, die Serverdaten müssen
' im Script konfiguriert werden
' backup_vm.vbs -all|-vm:<lokaler Pfad zur VMX-Datei> [-srv:<servername>] [-prt:<Portnummer>] [-usr:<Benutzername>]
' [-pwd:<Passwort>] [-dst:<UNC Zielpfad>] [-tmp:<TEMP-Pfad>] [-int]
'
' Nicht übergebene Parameter werden der Konfig im Script entnommen
'
' Beispiele:
' Backup_VM.vbs -all Sichert alle VMs des im Konfigteil des Scripts angegebenen Servers
'
' Backup_VM.vbs -all -srv:192.168.1.1 -usr:domain\user -pwd:password -tmp:\\server\freigabe\pfad -dst: \\server2\freigabe\pfad -int
' Sichert alle VMs des Servers 192.168.1.1 mit den übergebenen Anmeldedaten für den Server. Die temporären Kopien der VMs
' werden in \\server\freigabe\pfad und die Zipfiles in \\server2\freigabe\pfad abgelegt. Der Status wird interaktiv angezeigt.
'
' Backup_VM.vbs -vm:d:\vmguest1\guest1.vmx -srv:192.168.1.1 -usr:domain\user -pwd:password -tmp:\\server\freigabe\pfad -dst: \\server2\freigabe\pfad
' Sichert die VM "d:\vmguest1\guest1.vmx" vom angegebenen Server. Es erfolgen keine Bildschirmausgaben. Dieser Aufruf ist "Batch-geeignet"
'
' Backup_VM.vbs Die zu sichernde VM und der Zielordner werden interaktiv abgefragt.
' EndRegion
'Region Changelog
' 13.06.07 V0.9.5
' diverse Bugfixes
' alternativer Packer LZOP eingebunden - wesentlich schnellere Kompression, aber 10-20% größere Archive
' 13.06.07 V0.9.4
' Check, ob VM bei Herunterfahren hängt, hartes shutdown nach Timeout
' Backup All VMs eines Servers
' Einführung der Klasse VM_Guest um Backup aller VMs zu händeln
' Neue flexiblere Parameterübergabe (siehe Syntax)
' Errorhandling überarbeitet
' Diverse Bugfixes
' 12.12.06 V0.9.3
' Textnachrichten aus Quelltext in Konfigteil verschoben für bessere Übersicht
' Nicht laufende VMs werden gleich komprimiert, und nicht erst zum Backupdrive kopiert
' 11.12.06 V0.9.2
' Klasse iestatus integriert
' Im Interaktiven Mode wird der aktuelle Status in einem IE-Fenster ausgegeben
' RemoteBackup hinzugefügt
' Vor Backup nun Check ob noch genügend Plattenplatz auf Backupdrive ist
' diverse kleine Änderungen
' 08.12.06 Bugfix: Konfig AlertMail wurde nicht ausgewertet
' und Mails immer verschickt
' 07.12.06 V0.9.1
' Schreiben von Logfiles integriert
' Globales Log für Start-Stop und Errors
' Log je VM-Sicherung mit zusätzlichen Statusmeldungen
' Versand des Sicherungslog mit Abschlußmail
' Loglevel für Eventlog und Globales Logfile konfigurierbar
' 06.12.06 Funktion zum Löschen des tempFolders hinzugefügt mit Benachrichtigung bei
' erfloglosem Löschen
' Fehlerhafte Dateigrößenberechnung korrigiert
' Bug behoben: Löschen der Kopie von suspended VMs nicht möglich
' 05.12.06 Starte gleich mit V0.9 Saxa hat schließlich gute Vorarbeit geleistet
Was noch geplant ist:
- Nutzung von ShadowCopy fürs Kopieren, um Downtime der VM zu reduzieren
Diskussion des Scripts, Bugmeldungen und Vorschläge bitte in meinem Forum unter Projekte.
Beitragstitel bitte mit <Bug>, <Vorschlag> oder <Featurerequest> beginnen.
Die aktuelle Version werde ich regelmäßig hier posten.
Nicht vergessen, die Konfiguration anzupassen
Der Vollständigkeit halber: Die Verwendung des Scriptes erfolgt auf eigene Gefahr! Ich übernehme keine Haftung für eventuelle Folgeschäden! Fragen Sie vor Verwendung Ihren Arzt oder Apotheker.
Angeregt durch Saxa: The ultimate VBScript for VM backup on Windows hosts im VMTN habe ich das dortige Script übersetzt und etwas erweitert.
Neu ist die Unterstützung des Packers LZOP. Dieser komprimiert fast in "WireSpeed", so das die BAckupzeit erheblich verkürzt wird. Negativer Nebeneffekt: die Archive werden ca. 10-20% größer. Aber mir ist die Zeitersparniss wichtiger - und 6 Minuten Komprimierung statt 35 Minuten sind ein kleiner Unterschied ... wer möchte kann weiter 7Zip nutzen
Eine kleine Einschränkung hat meine Einbindung von LZOP aber - in den Verzeichnissen der VMs dürfen keine Unterverzeichnisse vorhanden sein - sonst wird das Komprimieren als vom Script als fehlerhaft gemeldet.
Neu ist auch die Möglichkeit alle VMs eines Servers zu sichern.
Es werden die registrierten VMs des Servers ausgelesen und nacheinander runtergefahren, kopiert, gestartet. sind alle Kopiert werden die Kopierten Files komprimiert.
So - genug palaver, hier isses:
' Version: 0.9.5
' Description: Das Script Stoppt die per Parameter übergebene virtual Maschine eines VMWare-Serves,
' erstellt eine Kopie der vm, Startet die vm wieder und komprimiert anschließend
' die Kopie der vm mit 7Zip. Ergebnisse der Prozedur werden per Mail versendet und ins Eventlog
' eingetragen
'
'Vorraussetzungen: Server: VMWare Server ab 1.0
' Windows 2003 Server
' Client: (Scriptausführender Rechner)
' ab Windows XPSP2 (getestet auf Windows XP SP2)
' VMCom-API (wird mit VMWare Console installiert, auch einzeln downloadbar)
' installiertes 7Zip
'
' Syntax: backup_vm.vbs
' Ohne Parameterübergabe werden die notwendigen Daten für das BAckup einer VM interaktiv abgefragt, die Serverdaten müssen
' im Script konfiguriert werden
' backup_vm.vbs -all|-vm:<lokaler Pfad zur VMX-Datei> [-srv:<servername>] [-prt:<Portnummer>] [-usr:<Benutzername>]
' [-pwd:<Passwort>] [-dst:<UNC Zielpfad>] [-tmp:<TEMP-Pfad>] [-int]
'
' Nicht übergebene Parameter werden der Konfig im Script entnommen
'
' Beispiele:
' Backup_VM.vbs -all Sichert alle VMs des im Konfigteil des Scripts angegebenen Servers
'
' Backup_VM.vbs -all -srv:192.168.1.1 -usr:domain\user -pwd:password -tmp:\\server\freigabe\pfad -dst: \\server2\freigabe\pfad -int
' Sichert alle VMs des Servers 192.168.1.1 mit den übergebenen Anmeldedaten für den Server. Die temporären Kopien der VMs
' werden in \\server\freigabe\pfad und die Zipfiles in \\server2\freigabe\pfad abgelegt. Der Status wird interaktiv angezeigt.
'
' Backup_VM.vbs -vm:d:\vmguest1\guest1.vmx -srv:192.168.1.1 -usr:domain\user -pwd:password -tmp:\\server\freigabe\pfad -dst: \\server2\freigabe\pfad
' Sichert die VM "d:\vmguest1\guest1.vmx" vom angegebenen Server. Es erfolgen keine Bildschirmausgaben. Dieser Aufruf ist "Batch-geeignet"
'
' Backup_VM.vbs Die zu sichernde VM und der Zielordner werden interaktiv abgefragt.
' EndRegion
'Region Changelog
' 13.06.07 V0.9.5
' diverse Bugfixes
' alternativer Packer LZOP eingebunden - wesentlich schnellere Kompression, aber 10-20% größere Archive
' 13.06.07 V0.9.4
' Check, ob VM bei Herunterfahren hängt, hartes shutdown nach Timeout
' Backup All VMs eines Servers
' Einführung der Klasse VM_Guest um Backup aller VMs zu händeln
' Neue flexiblere Parameterübergabe (siehe Syntax)
' Errorhandling überarbeitet
' Diverse Bugfixes
' 12.12.06 V0.9.3
' Textnachrichten aus Quelltext in Konfigteil verschoben für bessere Übersicht
' Nicht laufende VMs werden gleich komprimiert, und nicht erst zum Backupdrive kopiert
' 11.12.06 V0.9.2
' Klasse iestatus integriert
' Im Interaktiven Mode wird der aktuelle Status in einem IE-Fenster ausgegeben
' RemoteBackup hinzugefügt
' Vor Backup nun Check ob noch genügend Plattenplatz auf Backupdrive ist
' diverse kleine Änderungen
' 08.12.06 Bugfix: Konfig AlertMail wurde nicht ausgewertet
' und Mails immer verschickt
' 07.12.06 V0.9.1
' Schreiben von Logfiles integriert
' Globales Log für Start-Stop und Errors
' Log je VM-Sicherung mit zusätzlichen Statusmeldungen
' Versand des Sicherungslog mit Abschlußmail
' Loglevel für Eventlog und Globales Logfile konfigurierbar
' 06.12.06 Funktion zum Löschen des tempFolders hinzugefügt mit Benachrichtigung bei
' erfloglosem Löschen
' Fehlerhafte Dateigrößenberechnung korrigiert
' Bug behoben: Löschen der Kopie von suspended VMs nicht möglich
' 05.12.06 Starte gleich mit V0.9 Saxa hat schließlich gute Vorarbeit geleistet
Was noch geplant ist:
- Nutzung von ShadowCopy fürs Kopieren, um Downtime der VM zu reduzieren
Diskussion des Scripts, Bugmeldungen und Vorschläge bitte in meinem Forum unter Projekte.
Beitragstitel bitte mit <Bug>, <Vorschlag> oder <Featurerequest> beginnen.
Die aktuelle Version werde ich regelmäßig hier posten.
Nicht vergessen, die Konfiguration anzupassen
Der Vollständigkeit halber: Die Verwendung des Scriptes erfolgt auf eigene Gefahr! Ich übernehme keine Haftung für eventuelle Folgeschäden! Fragen Sie vor Verwendung Ihren Arzt oder Apotheker.