13 Apr
Im Windows Server 2008 ist das Backup Tool “Windows Server Backup” enthalten.
Edit/Update: Diese Serversicherung (vor allem die später beschriebene automatische Sicherung per Script) ist ein Feature von Windows Server und muss als solches also erst installiert werden. Geht dazu in den Server-Manager, auf “Features hinzufügen” und installiert die komplette “Windows Server-Sicherungsfeatures”. Für die Befehlszeilenvariante muss auch “Windows Powershell” mitinstalliert werden.
Mit diesem Feature sind Backups schnell erstellt, manuell oder auch automatisch. Die automatische Erstellung von Server Backups wird durch einen simplen “Sicherungszeitplan” ermöglicht. Bei der Erstellung eines solchen Plans stehen allerdings nur 2 Zeitspannen zur Verfügung: täglich und mehrmals täglich.

Für eine seltenere Sicherung ist keine Option vorgesehen. Möchte man nun doch flexibler Backups erstellen ist ein Workaround angebracht.
Meine spontane Idee war ein Backup per Batch und diese dann per Taskplaner timen.
Wie erstellt man ein Backup per Batch? Hier der Befehl:
wbadmin start backup -backuptarget:F: -include:C:,D: -vssfull -quiet
-backuptarget bestimmt das Ziel, -include die zu sichernden Quellen, -quiet besagt ohne UI und -vssfull gibt an, dass mit dem Volume Shadow Copy Service die History aller Dateien aktualisiert wird.
Mehr Infos erhaltet ihr mit wbadmin start backup /?.
Backups die mit Hilfe der Batch erstellt wurden werden auch im “Windows Server Backup” Tool gelistet und können dort auch ganz normal benutzt werden. Also es geht keinerlei Funktionalität durch die CMD verloren.

Die erstellte Batch können wir jetzt per “Aufgabenplanung” automatisch ausführen lassen, in meinem Fall einmal wöchentlich.
Um eine etwas bessere Kontrolle über das Ergebniss der Sicherung zu haben empfehle ich die Batch auszubauen:
1 2 3 4 5 6 | set logfile="C:\backuplog.txt" echo ########################## %computername%: %date% - %time% >> %logfile% echo. >> %logfile% wbadmin start backup -backuptarget:F: -include:C:,D: -vssfull -quiet >> %logfile% echo. >> %logfile% echo ########################## %computername%: %date% - %time% >> %logfile% |
Wir setzen den Pfad zu einer Logdatei in die Variable logfile und geben vor dem Backupvorgang und danach einige Informationen dazu. An unsere bekannte Zeile 4 hängen wir die Umleitung >> %logfile% an.
Die Textdatei sieht nach einem Backupvorgang ungefähr so aus:

Der Aufgabenplaner sollte die Batch nach Plan ausführen, diese sollte ein tolles Backup erstellen und den Vorgang in die Logdatei schreiben und das Server Backup Tool sollte die Sicherung erkennen.
Links die manuellen Tests und rechts das Backup am Samstag.

Das wars! Vielleicht etwas unprofessionell aber es funktioniert 1A!
Update: Ich habe das Script noch weiter ausgebaut und möchte euch das natürlich nicht vorenthalten. Das Sicherungsziel wird jetzt über eine Variable angesprochen. Diese wird erst auf Ort 1 gesetzt und falls dieser – aus welchen Grund auch immer – nicht erreichbar ist wird ein Ort 2 als Alternative gesetzt. Hier ließen sich natürlich weitere Alternativen einbauen, es sollte aber eher die Bemühung es Admins sein, einen zuverlässigen Ort zu arrangieren ![]()
Das Backup wird jetzt mit -allCritical und -systemState ausgeführt und sicher somit systemkritische Dateien aller Art mit.
Update 20.07.2011: -systemState gibt es nicht mehr!? Vorerst entfernt.
Bei einem Fehlschlag wird die Logdatei entsprechend geschrieben und eine Alarmmail via Batch Mailer an die Admins abgesetzt. Wie ihr diesen Batch Mailer aufsetzt steht hier.
@echo on
if not exist Z: net use Z: \\server\*** /user:***
set logfile="C:\backuplog.txt"
::error mail reciever
set mailto=***@***.***
for /f "skip=1 tokens=2 delims=[]" %%* in ('ping.exe -n 1 -4 %computername%') Do (set "IP=%%*")
for /f "tokens=1,2,3,4 delims=." %%a in ("%IP%") do set IPb1=%%a&set IPb2=%%b&set IPb3=%%c&set IPb4=%%d
set target=\\server\***
echo ########################## %computername%: %date% - %time% >> %logfile%
echo. >> %logfile%
wbadmin start backup -backuptarget:%target% -include:C: -vssfull -allCritical -quiet >> %logfile%
set backuperrorlevel=%errorlevel%
if "%backuperrorlevel%"=="0" (goto end) else (goto fehler)
:fehler
echo. >> %logfile%
echo. >> %logfile%
echo ______________________________ >> %logfile%
echo ****************************** >> %logfile%
echo ****************************** >> %logfile%
echo Ein Fehler ist aufgetreten!! >> %logfile%
echo ****************************** >> %logfile%
echo ****************************** >> %logfile%
echo Errorlevel: %backuperrorlevel% >> %logfile%
echo. >> %logfile%
echo. >> %logfile%
:: Batch Mailer
:: http://hannes-schurig.de/23/06/2011/batch-mailer-email-aus-batch-script-schicken/
:: sendet eine Mail an und meldet fehlgeschlagenes Backup
start "iexplore" "http://stuff.hannes-schurig.de/mailer.php?******&contactname=.%IPb4% %computername%&subject=Backup fehlgeschlagen &email=***@***.***&message=Das woechentliche automatische Backup auf: .%IPb4% "%computername%" ist fehlgeschlagen || Errorlevel: %backuperrorlevel%&mailto=%mailto%"
::20 Sekunden warten und Internet Explorer Fenster schließen
ping 127.0.0.1 -n 20
taskkill /im "iexplore.exe"
ping 127.0.0.1 -n 5
:end
echo. >> %logfile%
echo ########################## %computername%: %date% - %time% >> %logfile%
echo ########################### Errorlevel: %backuperrorlevel% >> %logfile%
echo. >> %logfile%
exit
To-Do: Logdatei beim Fehler als E-Mail Anhang mitschicken. Keine Ahnung, wie ich das mache. Ideen?
Hat dir dieser Post gefallen? Dann schau noch unter den "Ähnlichen Artikeln" nach und abonniere meinen RSS Feed.Momentan sind noch keine Einstellungen mglich.
Es wird bald mglich sein, auf Wunsch html7bar komplett zu deaktivieren.
35 Responses for "Windows Server 2008: automatisches Backup per Batch"
ich habe zwar keine ahnung von alle dem, aber für mich sieht das so aus, als ob es da noch einen einfacheren oder gar hübscheren Weg geben muss
Bin jetzt auch nicht DER Server Experte, zugegebenermaßen. So seh ich das:
Also wie geschrieben, Serverbetriebssysteme sind auf höchste Last und höchste Redundanz getrimmt. Wenn man einen professionellen Server betreibt dann wird normalerweise erwartet, dass dieser MINDESTENS täglich gesichert wird. Wer kauft schon ein 2000€ Betriebssystem und möchte dann nicht täglich sichern?
So sehe ich das zumindest. Wir haben bei uns aber einfach nicht die Veranlassung tägliche Sicherung zu überwachen, kontrollieren und den Überblick zu behalten. Selbst wöchentliche Sicherungen reichen und vollkommen.
Daher mein Workaround da ich spontan keine bessere Planung eines Server Backups im seltenen Zeitraum gefunden habe.
Wenn du also einen Weg findest, das “normal” zu machen bitte ich um einen kurzen Wink
Danke fürs Lesen/Überfliegen
hi,
backup mit dem asistenen für sicherungszeitplan
und dann in die tastkverwaltung und den task auf
wöchenltlich stellen, sollte funktionieren…
probiere das z.z. an einem 2008 server
ben
Hmm das schau ich mir mal an.
Fahre übrigends seit April erfolgreich mit dieser Taktik, jede Woche ein Backup.
also ich kann morgen bescheid sagen ob das funktioniert,
bzw. spätestens am sonntag, weil da das wöchentliche backup läuft
im windows backup-server steht zwar noch drin,
dass es täglich sichern will, aber da der task dahinter hängt,
würde ich mal meinen, dass die übergabe einfach mal nicht hinhaut
auch sehr interessant ist ja, dass das backup nach
einem verschieben nicht mehr durchsuchbar ist
(musste ich feststellen, als mal ein ordner wiederhergestellt werden sollte)
da ist mir die time-machine lösung von apple dann doch lieber
ben
hallo ihr,
hier nun meine versprochene rückmeldung,
ob es funktioniert wenn man den task abändert:
kurz und knapp – ja
ben
Genau nach sowas habe ich gesucht. Endlich kann die Sicherung automatisch auf eine Netzwerkfreigabe gespeichert werden. Über die GUI war das ja leider nicht möglich gewesen. Aber mit dem Script gehts.
PRIMA, DANKE
yop, läuft gut. dank dir !
Läuft auch hier perfekt auf einem Server 2008 Foundation Server
Danke!
An die Vorredner: danke für das Feedback.
Bei mir started zwar wbadmin.msc – aber es passiert nichts:-(
Wir regelt Ihr UAC oder habt Ihr das ausgeschaltet?
Die Benutzerkontensteuerung ist beim Administrator aktiviert, danach wird es eher nicht liegen.
Hast du den Befehl korrekt angepasst?
wbadmin start backup -backuptarget:F: -include:C:,D:mit den korrekten Buchstaben versehen und ausreichend Speicherplatz auf dem Zielmedien?Ja – nur die Laufwerksbuchstaben entsprechend angepasst. Ich gebe
wbadmin.msc start backup -backuptarget:E: -include:C: -vssfull
unter start-ausführen ein.
Der Server-Manager startet – ich muss bestätigen, dass ich den Vorgang fortsetzen will (UAC). Danach ist das fenster für die Windows-Server-Sicherung offen. Aber das war es dann auch schon. Es wird nichts gestartet.
(SBS 2008 SP2)
Starte mal ein CMD Fenster und gib den Befehl da mal ein, gibt es irgendeinen Output danach?
Informier dich mal ob wbadmin.msc beim SBS auch funktioniert oder auch scriptgesteuert läuft und so. Vielleicht fehlen da irgendwelche nötigen Komponenten.
Ansonsten ab damit in die Microsoft Foren.
erstmal vielen dank fuer die bereitstellung deines batch files. ich war bisher noch nicht mit solchen dingen betraut sichere aber nun via task alle 2 tage voll automatisch sogar mit log auf eine externe NAS!
frage, wie kann ich denn z.b. nach der ersten voll nur noch inkrementell sichern, gibt es da auch ein batch moeglichkeit?
andernfalls waers mirr echt wenn er fuer jede sicehrung nen ordner mit timestamp erstellt – ist sowas ohne großen aufwand moeglich?
Guck dir mal die Befehlsreferenz von wbadmin an, entweder mit
wbadmin.msc /?oder hier. Es sieht so aus als wäre ein inkrementelles Backup Standard, wenn man nicht -vssFull als Parameter angibt.Testen musst du das aber selbst.
Was den Timestamp Ordner angeht kannst du doch einfach den Befehl leicht abändern:
wbadmin start backup -backuptarget:F:\%date%\ -include:C:,D:Oder?
Batch wandelt Date in das Datum um und bei jedem Backup landet es dann in einem neuen Ordner.
Interessant – das Tool scheint wohl nur im Command-Fenster zu laufen. Wenn ich das als Administrator laufen lasse, funktioniert es.
Sobald ich aber den Befehl direkt eingebe (z.Bsp. über Start-Ausführen) öffnet sich die GUI und dann passiert nichts weiter.
Meine alte Sicherung (die ich über direkt über die GUI gestartet hatte) scheint aber überschrieben worden zu sein. Ist das normal?
Ich habe mir jetzt mal den MS-Link angeschaut.
Ist denn -vssCopy nicht -vssFull vorzuziehen? Das entsprechende Betriebssystem vorausgesetzt.
@DT: Als Ergänzung, gerade eben als Update auch in den Artikel eingepflegt:
Für die Ausführung von Backups via Kommandozeile, wie im Artikel beschrieben, müssen entsprechende Serverfeatures installiert sein.
Siehe Artikelupdate, gleich am Anfang.
Vielleicht sind/waren die bei dir nicht installiert und deswegen hat das Script nicht funktioniert?
Hallo zusammen
Vielen Dank für die Beschreibung, war sehr nützlich, habe das Script um ein paar Befehle erweitert. Hier ein paar Anregungen:
Ich persönlich würde folgende Parameter zusätzlich angeben:
-allCritical (Erstellt zu den bereits angegebenen Volumes eine Sicherung aller Volumes, die Systemdaten enthalten.)
-systemState (Erstellt eine Sicherung von Systemdaten, fragt mich nicht was genau aber ev. wichtig für eine Wiederherstellung im Ernstfall)
Also wenn man das Backup über das GUI einrichtet, kann auch eine Inkrementelle Sicherung durchgeführt werden. Dabei werden nur neuere Systemdaten gesichert und so lange wie möglich behalten. (Werden meines Wissens erst dann gelöscht, wenn der Platz knapp wird.)
Wie es mit dem angegebenen CMD-Befehl verhält kann ich noch nicht sagen.
Grz
Cr
P.S.
Einige Punkte sind wichtig bei der Einrichtung über die Aufgabenplanung:
Folgende Punkte sollten aus meiner Sicht gewählt werden:
“Allgemein”
–> “Unabhängig von der Benutzeranmeldung ausführen”
–> “Mit höchsten Privilegien ausführen”
“Bedingungen”
–> (Hacken entfernen!) “Beenden, wenn Computer in den Akkubetrieb wechselt”
–> “Computer zum Ausführen der Aufgabe reaktivieren”
“Einstellungen”
(dem Bedarf entsprechend anpassen, die Backups sollten sich nicht überschneiden können!)
Beim drücken von “OK” sollte man nun auch aufgefordert werden, Benutzerdaten einzugeben, mit denen die Aufgabe ausgeführt werden soll. (Administrator oder anderen benutzer mit genügend hohen Rechten wählen!)
Danke für die Hinweise.
Mittlerweile habe ich mein Script auch stark überarbeitet.
Enthalten sind jetzt auch die 2 erwähnten Parameter, eine Fehlerbehandlung mit Administratoren Mailbenachrichtigung und flexiblerer Sicherungszielwahl (mit Ausweichziel).
Hier ist mein jetziges Script: Link
Ich schreibe das nochmal in ein Updatepost. Oder update es hier.
edit: Habe ein Post Update gemacht.
Hallo,
danke erst einmal für deine tolle Anleitung. Ich habe diese allerdings etwas anders übernommen! Undzwar versende ich meine Email per Blat (dort gehen auch anhänge).
Gruss
Email versende ich ja jetzt auch, das mit den Anhängen wollte ich ja vielleicht noch nachprogrammieren. Aber momentan ist eine einfache Meldung schon ausreichend.
Seh ich das richtig: es gibt den Befehl
-systemStatenicht mehr?!Zumindest bricht seit 2, 3 Wochen das Backup ab,
-systemStatesei kein gültiger Parameter. In derwbadmin start backup -?Hilfe steht der Parameter auch nicht mehr drin.Hy
absolut toll was du da gemacht hast – bezüglich mail hab ich
das gemacht
c:\Sicherung\mail-as-batch.exe -smtp xxx.xxx.com -from Sicherung@xxx.com -to xxx@xxx.com -S “Sicherung Fehlgeschlagen” -body backuplog.txt
wenn ich das im cmd starte funktioniert das einwandfrei – ich weis leider nicht wie ich das in deinem Script richtig einbinden soll – toll wäre es wenn ich das mail-as-batch einmal ausführt wenn die Sicherung funktioniert hat und eben wenn ein Fehler ist und nach jedem Mail soll der die log löschen
könnt ihr mir da helfen denn damit decken wir alle Probleme ab
Na du musst doch nur die eine Zeile von dir anstatt meiner “start iexplore” Zeile einsetzen und nochmal beim erfolgreichen Backup.
Also ich nehm mal mein Script von oben ab Zeile 32:
Das wars. Du kannst natürlich die Absender- und Empfängeradresse sowie SMTP in Variablen speichern und dann die Variablen im Aufruf nutzen. Sollten sich diese Daten mal ändern hast du das Script schnell angepasst.
Ich habe das beispielsweise mal in der vorletzten Zeile gemacht.
So würde ich die Zeile gestalten, ist halt auch kürzer mit Variablen.
Die %IPb4% Variable steht für das 4. Byte der IP, also bei 113.120.45.100 gibt es 100 zurück. Wie du die Variable ausliest steht hier: einzelne Teile der IPv4/v6 auslesen
Du kannst Dir die E-Mail mit Anlage Deiner Wahl über die Aufgabenplanung schicken lassen. Unter Aktion E-Mail findest Du alles, was Du brauchst
Aber diese Aufgabe wäre doch dann seperat vom Backup Script und wüsste nicht, wie das Backup Script abläuft, ob es Fehler erzeugt etc.
Oder würdest du mit dem Backup Script dann die Aufgabe manuell ausführen lassen?
Hallo Falls Du noch ein Tool zum Mail verschicken mit anhang suchst schau dir am besten mal das kostenlose programm “blat” an (muß nicht installiert werden):
In dem Link unten wird es erklärt.
http://www.msxfaq.de/tools/blat.htm
Hy,
Die Patch Datei finde ich super.
Wäre es auch möglich Virtuelle Maschinen so zu sichern?
Grund meiner Frage ist: Habe drei NAS zum Backup und würde gerne MoMiFr, DiDoSa und So auf unterschiedliche NAS sichern.
Jedoch handelt es sich um virtuelle Maschinen.
VSS Writer schon installiert und die std. Windows Server Sicherung funktioniert auch.
LG Andreas
Du kannst virtuelle Maschinen nur grob sicher. Das heißt: du kannst die .vhd und .vram Dateien sichern und könntest im Notfall versuchen die VM mit diesen Dateien wiederzubeleben.
Das solltest du vorher aber mal getestet haben ob/wie das dann geht.
Die Batch würde also statt (oder zusätzlich zu) der wbadmin Schnittstelle einen normalen xcopy Befehl auf die VM Dateien absetzen und diese sichern. Es wäre noch fraglich, ob das beim Betrieb der VM geht, ob xcopy benutzte Dateien kopieren kann. Wenn ja wäre die nächste Frage welcher Stand dann gesichert ist. Der Live Zustand im Zeitpunkt der Kopieraktion oder ein älterer Stand, der in die Dateien geschrieben wurde.
Mehr als diese Gedankenabstöße kann ich leider nicht liefern, habe das bisher noch nicht gemacht. Aber das sollte reichen um paar Tests zu fahren.
Hallo,
wäre das vielleicht eine Lösung für dein Mailproblem?
http://64-bit.de/dokumentationen/netzwerk/f/002/DE-Mailserver-HOWTO-3.html
Bin mir nur nicht sicher wie es sich mit einem Anhang verhält. Allerdins sollte die Benachrichtigung kein Problem sein.
Grüße
Hm klingt stark nach Linux, hier geht es ja um das Server 2008 Backup. Aber für Linux Server wäre das wohl eine Möglichkeit Mails zu verschicken (hab mir das jetzt aber nicht so im Details angesehen).
Hi,
anbei der bessere Automailer:
http://www.serverhowto.de/Teil-3-Mails-auf-Kommando-Blat.684.0.html
Probiert und für gut befunden
Viel Spaß beim testen….
Blat wurde deswegen hier auch schon mehrfach vorgeschlagen
Leave a reply