Windows Server 2008: automatisches Backup per Batch

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:

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

Zufälliger Artikel:  Excel: schnelle Navigation zwischen Tabellenblättern mit VBA

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.

Zufälliger Artikel:  Android: Internen Speicher aufräumen und entlasten

To-Do: Logdatei beim Fehler als E-Mail Anhang mitschicken. Keine Ahnung, wie ich das mache. Ideen?

66 Kommentare

  1. 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
  2. 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 🙂

  3. 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

  4. 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

  5. hallo ihr,

    hier nun meine versprochene rückmeldung,
    ob es funktioniert wenn man den task abändert:

    kurz und knapp – ja

    ben

  6. 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

  7. Bei mir started zwar wbadmin.msc – aber es passiert nichts:-(
    Wir regelt Ihr UAC oder habt Ihr das ausgeschaltet?
  8. 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?

  9. 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)

  10. 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.

  11. 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?

  12. 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.

  13. 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?

  14. Ich habe mir jetzt mal den MS-Link angeschaut.
    Ist denn -vssCopy nicht -vssFull vorzuziehen? Das entsprechende Betriebssystem vorausgesetzt.
  15. @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?

  16. 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!)

  17. 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.

  18. 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

  19. 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.
  20. Seh ich das richtig: es gibt den Befehl -systemState nicht mehr?!
    Zumindest bricht seit 2, 3 Wochen das Backup ab, -systemState sei kein gültiger Parameter. In der wbadmin start backup -? Hilfe steht der Parameter auch nicht mehr drin.

  21. 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 🙂

  22. 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

  23. 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 😉
  24. 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?
  25. 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

  26. 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.

  27. 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).

  28. Hallo,
    vielen Dank für Deinen Beitrag. Es ist genau, das was ich gesucht habe.
    Ich sichere hier einen SBS und hatte das Problem, dass ich mit der integrierten Sicherung nicht auf ein NAS sichern konnte.
    Nun stellt sich folgende Frage:
    wenn ich mit wbadmin _täglich_ sichere, dann läuft mir irgendwann mal das NAS über.
    Gibt es eine Möglichkeit, z.B. aktuell nur 10 Sicherungen vorzuhalten, so dass dann die 11. Sicherung die ältstes überschreibt bzw. löscht?
    Tausend Dank!
    Erich
  29. Hallo Erich.
    Eine Realisierung von 10 Backups ist sicherlich einfach per Batch möglich. So würde ich es spontan machen: vor der Sicherung die Anzahl der Ordner des Sicherungsordners zählen lassen. Wenn mehr als 10; ältesten Ordner löschen.

    Habe dazu gerade mal ein wenig rumprogrammiert und einen Beitrag geschrieben; praktisch nur für dich ^^
    http://hannes-schurig.de/09/09/2012/batch-ordner-und-dateien-zaehlen/

    Dann musst du also nur noch den ältesten Ordner löschen wenn die Anzahl an Ordner größer als 10 ist, das sollte ja machbar sein 😉
    Wenn nicht sagste nochmal Bescheid.

    Bezüglich der Parameter: siehe Kommentar 16, wbadmin /? oder
    hier. So richtig erkundet habe ich das noch nicht. Ich vermutete damals vsscopy = inkrementell. Jemand der wirklich Ahnung hat darf hier gerne Klarheit schaffen 😉

    Liebe Grüße

  30. Hallo Hannes,
    die Idee mit so einer Batch-Datei ist mir auch schon gekommen, aber Du hast das wirklich perfektioniert!!

    Ich habe auch noch eine Frage:
    Wir haben eine SQL-Datenbank, die vor der Sicherung gestoppt werden soll, und nach der Sicherung wieder gestartet werden soll.
    Wenn ich den Befehl „net stop …“ vor dem Aufruf der Sicherung platziere wird der ja noch ausgeführt, aber wenn ich in die Zeile nach dem „wbadmin …“-Aufruf den Befehl zum starten des SQL-Dienstes „net start …“ schreibe, startet der den SQL-Dienst bereits während die Sicherung läuft, weil das script nur die Datensicherung aufruft, und danach sofort im script weitermacht!
    Gibt es irgendeine Möglichkeit zu warten bis die Server-Sicherung fertig ist, und direkt danach den SQL-Dienst zu starten?
    Das wäre sehr wichtig für uns und wahrscheinlich auch für viele andere Admins!

    Gruß
    Heiko

  31. Ja so etwas gibt es und es ist ziemlich easy:
    start /wait programm.exe
    ist schon alles.
    Du änderst also die
    wbadmin [bla]
    Zeile in
    start /wait wbadmin [bla]
    um und dann sollten kommende Befehle abwarten bis wbadmin geschlossen wird.
    Zumindest würde ich das jetzt so vermuten, getestet hab ich das mit wbadmin noch nicht.
    Gib bitte ne Rückmeldung wie es lief 🙂

  32. Ganz so einfach ist das leider nicht…
    Der Befehl „wbadmin …“ startet bloss das Windows Server-Sicherungstool. Für ihn ist die Aufgabe mit dem Start des Tools erledigt.
    Mit „start /wait “ hatte ich nämlich auch schon rumprobiert, aber nach dem Start der Sicherung geht es schon in der Batchdatei weiter.
    Die Sicherung ist zu dem Zeitpunkt aber noch nicht abgeschlossen!
    Wnn man dann den SQL-Server schon wieder starten würde, würde der während der eigentlichen Sicherung laufen und den Zugriff auf die Daten verweigern.

    Man müsste also irgendein Feedback von der Server-Sicherung erhalten, damit man weiß, wann diese fertig ist…

  33. Hallo Heiko,
    ich mache das ähnlich wie Hannes (danke auch für die Infos bzgl. Mail).
    Du kannst die einzelnen Aktionen in verscheidene Batch-Dateien auslagern und diese aus der „Haupt“-Batch mit CALL aufrufen, dann wird auf das Ergebnis gewartet.
    Das funktioniert bei meinen Kunden bestens mit Server 2008 R2 und SBS 2011.
    Viele Grüße
    Hartmut
  34. Hallo Hartmut,
    kannst du ein solches Beispielscript hier mal posten? Den betreffenden Teil mit dem Auslagern zumindest?
    Ich grübel gerade ein wenig über die mögliche Realisierung mit dieser Taktik.

    LG

    @Heiko: mich wundert es übrigens, dass bei dir nach dem wbadmin Befehl direkt alle folgenden Befehle ausgeführt werden.
    Nach meinem wbadmin Befehl (siehe Script oben) wird der errorlevel abgefangen. Allein deswegen muss das Script ja warten, bis wbadmin durch ist; erst dann kann der nächste Befehl auch das errorlevel verarbeiten.
    Und das passiert bei mir auch, denn mit dem errorlevel wird danach ja viel hantiert.
    Also ggf. in deinem Script einfach mal ein errorlevel danach abfangen, selbst wenn du ihn nicht brauchst müsste das Script die Verarbeitung solange pausieren.

  35. Hallo Hannes,

    gerne!

    Hier mein Standard-Skript für meinen Notebook, beim Server muss man die PowerConfigs und das Herunterfahren natürlich weglassen ; )

    Vorneweg sei noch gesagt, dass ich „WakeupOnStandBy“ von Dennis Babkin benutze, um meinen Notebook aus dem Ruhezustand zu wecken für das Backup.

    Das ganze mit Parametern (2 ext. Platten) und ab in die Aufgabenplanung!

    Das habe ich mir gebastelt, als meine Kauf-Version eines namhaften Herstellers nicht mehr richtig wollte und dieser keine Abhilfe schaffen konnte.

    Das ist relativ einfach, aber sehr robust und läuft bei mir und allen meinen Kunden.

    Bei Bedarf poste ich auch gerne den Inhalt der Batch-Dateien!

    Beste Grüße

    Hartmut

  36. Der Inhalt der Batch Dateien würde mich durchaus interessieren, vielleicht finde ich ein paar neue Tricks 😉
    Kannst du mir diese per Mail zuschicken? Hier 7 Scripte zu posten ist vielleicht etwas zu übertrieben; wer sie ebenfalls haben möchte kann dich ja kontaktieren.

    LG

  37. Hallo Hannes,
    ich habe meinen Fehler lokalisiert.
    Ich hatte vorher eine Server-Sicherung über das Sicherungstool erstellt. Dabei wurde in den Aufgabenplaner ein Aufruf „wbadmin start backup…“ gesetzt, der dann eine kryptische Zahlenkombination enthielt.
    Diese Zeile habe ich in meiner Batchdatei verwendet. Anscheinend wird mit diesem Befehl die Sicherung wirklich nur angestoßen, denn es geht danach sofort mit der Batchdatei weiter. Wenn ich den wbadmin-Befehl vollständig ausschreibe, wartet er in der Batchdatei wirklich bis zum Ende der Sicherung.

    🙂

    Mich würde noch folgendes Interessieren:
    Du beschreibst oben das Szenario, dass man die Anzahl von Dateien in einem Ordner zählen kann und hast auch ein script dazu eingestellt.
    Wie kann man jetzt aber z.B. die älteste Datei in diesem Ordner löschen, wenn die Anzahl der Dateien über 10 ist?

    Gruß
    Heiko

  38. Ich denke ich werde mal einen Beitrag erstellen zum Handling von Dateien und Ordnern eines bestimmten Alters. Ich denke ich müsste das morgen schon veröffentlichen können.
    Also stay tuned. 😉

  39. Lösungsvorschläge für zuvor angesprochene Problematik Löschen älteste Dateien/Ordner mit DOS Console bzw. hier Batch Schnipsel

    for /f „skip=5“ %%i in (‚dir /b /o-D /a d /tc „H:\??.??.????“‚) do (rd /s /q „h:\%%i“)
    Identifiziere und lösche alle ORDNER mit der Syntax xx.xx.xxxx (deutsches Datumsformat z.B. 14.06.2013) und überspringe dabei die 5 jüngsten …. Ergebnis die jüngsten fünf Sicherungsordner bleiben erhalten, alle älteren werden gelöscht

    for /f „skip=5“ %%i in (‚dir /b /o-D /a-d /tc „H:\BACKup_*.bkf“‚) do (del /f /s /q „h:\%%i“)
    Identifiziere und lösche alle Dateien mit der Syntax BACKup_irgendwas.bkf (altes NT BackUp Format, geht natürlich auch mit jeglichem anderen Dateityp) und überspringe dabei die 5 jüngsten …. Ergebnis die jüngsten fünf NT BackUpSicherungen bleiben erhalten, alle älteren werden gelöscht

    Grüße, Matze

    1. Hi matze!
      Stimmt, das „alte Ordner löschen “ Problem wollte ich ja auch noch angehen.
      Aber besser als deine Lösung wäre meine nicht geworden! Sogar mit datumsformaterkennung, nice.
      Kann ich mit deinem code einen neuen Artikel zu dem Thema schmücken?

      1. Hallo Matze, hallo Hannes,

        ich erhalte immer die Fehlermeldung „5“ %%i in (‚dir /b /o-D /a d /tc „h:??.??.???“‚) do (rd /s /q „h:\%%i“)“ kann syntaktisch an dieser STelle nicht verarbeitet werden.

        Was läuft da bei mir schief??

        1. Hallo Heiko,
          hast du den Laufwerksbuchstaben des Befehls angepasst?
          Im Befehl werden die Ordner in der Root von H:\ untersucht; ist das bei euch auch H:\?

          Wenn ja, kannst du mal auf H:\ den dir Befehl schmeißen, danach diese Scriptzeile ausführen und ein Screenshot davon machen?
          Schick mir einfach per Mail, ich schau mir das mal an.

  40. Hallo,

    Hat jemand schon mal die Erfahrung gemacht das Windows alle alten Backups einfach löscht, ohne Warnung? Ist mir jetzt schön öfters passiert. Z.b. 100 Backups gemacht mit Script dann kommt ein Tag da hat man nur noch eine, die letzte Sicherung. Problem kommt auch wenn man kein Script verwendet. Warum und wieso weiß ich nicht.
    Das Vertrauen in Windows Backup Server 2008 R2 ist etwas gestört. Ich würde es gerne weiter verwenden aber nicht so.
    Es war genug Speicher frei auf dem Ziellaufwerk. Vielen Dank!

  41. Hallo Wolfgang. Das Problem ist mir nicht bekannt, klingt auch echt komisch.
    Merksatz: Sicherungen sollten NIE nur an 1 Ort liegen. Vor allem nicht bei über 100 Sicherungen. Vor allem nicht bei den heutigen Festplattenpreisen.
    Mein Tipp: die Sicherungen sichern/duplizieren. Heißt: Nach einem erfolgreichen Backup mit wbadmin liegt die Sicherung auf einer Festplatte X. Dann hast du noch eine Festplatte Y, auf die das fertige Backup anschließend kopiert wird. Also am Ende des Scripts auf Errorlevel 0 testen und dann die Daten mit xcopy auf die zweite Platte kopieren.
    Alle Backups existieren also redundant auf 2 Festplatten. Sollten die Backups auf der direkt angeschlossenen Platte X gelöscht werden hast du trotzdem alles noch auf Platte Y verfügbar.
    Um die Sicherheit noch weiter zu erhöhen sollten beide Instanzen statt einfacher Festplatten eher NAS sein, beide vielleicht mit 4 Platten im RAID 0, jeweils 2 aktive Platten mit Spiegelung.
    Noch mehr Sicherheit gibt es, wenn das zweite RAID, auf dem die Sicherungen nachträglich kopiert werden, in einem anderen Raum/Haus stehen.
    Noch sicherer wird das ganze, wenn du diese 2. Festplatteninstanz auch noch jeden Monat auf ein Bandlaufwerk sicherst. Und noch sicherer ist es natürlich wenn diese Bänder ebenfalls in einem anderen Raum/Haus oder sogar in einem (feuer-, wasser- und drucksicheren) Tresor gelagert werden.
    Na gut, die letzten 2 Punkte mit Band und Tresor sind für Systembackups eher unüblich und preislich nicht sinnvoll 😉
    Aber wer Datensicherheit lebt, wird das mögen 😉

  42. Hallo,
    es ist es mittlerweile bei der Sicherung auf ein Netzlaufwerk möglich, dass er inkrementelle Sicherungen anlegt?
    und ist es außerdem möglich, dass er immer nur eine gewisse Anzahl von Versionen aufhebt?
    Danke
  43. Hallo Alex, zu beiden Themen gibt es hier schon reichlich Diskussionen. Such in den Kommentaren einfach mal nach „inkrementell“, da wurde viel geraten ^^ Es gilt also hier vor allem selber zu testen und, wenn du erfolgreiche Tests gemacht hast, das hier natürlich mitzuteilen.
    Das Löschen von älteren Sicherungen und Beibehalten der aktuellsten X Sicherungen steht ebenfalls ein paar Kommentare weiter oben (hauptsächlich Nr. 49).

  44. Hallöchen
    ersteinmal ein großen Dank für deine Batchdatei und die Arbeit die dahiner steckt.
    Ich habe folgendes Problem
    Die Sicherungen sollen auf extrne USB Platten die bei bedarf gewechselt werden laufen, jedoch versteht WBadmin – den parameter -backupTarget nicht ?
    Er bringt immer die Meldung das er den parameter nicht kennt.
    Das Serverbetriebssystem ist SBS2011 Std.
    Danke für eure Hilfe.

    mfg
    Udo

  45. Komisch, der Parameter backupTarget ist aber 100%ig richtig:

    C:\Users\Hannes>wbadmin start backup
    wbadmin 1.0 – Sicherungs-Befehlszeilentool
    (C) Copyright 2004 Microsoft Corp.

    Syntax: WBADMIN START BACKUP
    [-backupTarget:{ | }]
    [-include:]
    [-allCritical]
    [-user:]
    [-password:]
    [-noInheritAcl]
    [-noVerify]
    [-vssFull | -vssCopy]
    [-quiet]

    Parameter:
    -backupTarget Gibt den Speicherort für die Sicherung an.
    […]

    Dann scheinst du ihn vielleicht falsch einzusetzen.
    Mach mal bitte ein Screenshot von dem Script und von der Ausführung, wenn der Fehler angezeigt wird, dann schauen wir mal.

  46. Hallo Hannes
    also ich möchte das das Backup immer um 1:30 auf Laufwerk Z:
    stattfindet und LW Z: sind die wechselnden USB Laufwerke.
    Hier habe ich mal den Screenshot vom Befehl und der der Fehlermeldung abgelegt.
    http://prntscr.com/4yuv6g

    Vieleicht weißt Du ja weiter .

    VG Udo

    1. Hallo Udo,

      du nutzt auch einen ganz anderen Befehl als ich.
      Du nutzt: wbadmin enable backup
      Ich nutze: wbadmin start backup
      Die Befehle haben unterschiedliche Anwendungszwecke und unterschiedliche Parameter.

      <a href="http://technet.microsoft.com/de-de/library/cc742083(v=ws.10).aspx" target="_blank" rel="nofollow">wbadmin start backup</a> startet sofort ein Backup. <a href="http://technet.microsoft.com/de-de/library/cc742130(v=ws.10).aspx" target="_blank" rel="nofollow">wbadmin enable backup</a> erstellt neue Backup Pläne odert ändert sie.

      Ich nutze wbadmin start backup in einem Script, das ich wiederum in der Windows Aufgabenplanung einrichte, damit das Backup wiederholt ausgeführt wird. Aber das steht ja im Detail im Artikel.

      LG

  47. Danke Hannes
    manchmal sieht man den Wald vor bäumen nicht.
    Dachte die Parameter sind für den Zeitjob und das sofortige starten gleich.

    LG

  48. Hallo Hannes,
    Dein Artikel und die Kommentare haben mir sehr geholfen, vielen Dank.
    Mein Problem bezieht sich auf das inkrementelle Backup. Ich habe eine Batch erstellt, die mit dem Windows Server 2008 R2 einwandfrei funktioniert.

    „WBADMIN START BACKUP -backupTarget:\smb.hidrive.strato.comrootusersdrive-xxxx -include:c: -user:drive-xxxx -password:xxxxx -allCritical -vssFull -quiet“

    Das Backup wird auf eine Strato HiDrive Netzwerk Verbindung gesichert, funktioniert auch ganz gut.

    Was ich nicht verstehe ist, warum wird das Laufwerk C: vollständig gesichert, aber Laufwerk D: inkrementell?
    Eigentlich sollte auch C: nach einer Vollsicherung nur noch inkrementell gesichert werden, das geht aber wohl nicht mit wbadmin.
    Hast Du eine Idee wie es anders realisiert werden könnte?

    Das ganze soll als Desaster Recovery dienen, damit, falls die Hütte abbrennt, eine komplett wieder herstellbare Kopie unserer Server zur Verfügung steht.

    LG
    Markus

  49. Hi zusammen,

    ursprünglich habe ich vor langer Zeit auch mit dem Skript aus diesem Thread begonnen, die Windows-Serversicherung skriptgesteuert und über die Aufgabenplanung einzusetzen.

    Als kleines Dankeschön habe ich hier mal eine durch zusätzliche Codeschnipsel aus anderen Quellen weiterentwickelte, sehr komfortable Form dieses Skripts angehängt:

    Skript für WBADMIN unter Windows Server 2008 – 2012 (R2) zur Vollsicherung des lokalen Servers
    SERVER1 (SERVER1) in zwei Pfade WocheG / WocheU (je nach KW gerade oder ungerade), Wochentag (hier Montags) steuert dabei volle oder inkrementelle Sicherung.
    Mailversand mittels BLAT – Dieses Skript und den BLAT-Ordner dafür in das Verzeichnis C:SCRIPTING platzieren.
    Mailserver erlaubt hier für SERVER1 anonymes SENDEN
    Bei Vollsicherung erfolgt vorab eine Löschung aller Altsicherungen im Zielpfad.
    Der manuelle Aufruf einer Vollsicherung ist mit „FULL“ als Befehlszeilenparameter möglich.
    Die Mailfunktion kann mit „TESTMAIL“ als Befehlszeilenparameter getestet werden, ohne tatsächlich ein Backup auszuführen.

    Leider wirft die Serversicherung manchmal einen Errorlevel von 9009 und man erhält die Benachrichtigung als Fehlermeldung, obwohl das Backup laut Logdatei erfolgreich war.

    Weiß jemand von Euch, was dahinter steckt?

    Schreibt mal Eure Meinungen zu der Weiterentwicklung.
    Viel Spaß und Erfolg damit.

    Matthias

  50. Hallo Matze,

    danke für Deine Hilfe.

    Dann scheint der das beim SBS zu ignorieren, denn dort habe ich das gleiche Script laufen und da macht er das inkrementell.

    So wie ich das verstanden habe, werden mit AllCritical auch alle
    Systemkritische Daten gesichert. Dazu hätte ich noch Fragen:
    Würden die dann nicht fehlen bei der Wiederherstellung des Systems?
    Was passiert wenn diese Datein z.B. vom WindowsUpdate verändert werden?
    Wenn ich jetzt das AllCritical herausnehme, wird er das bisherige Backup für weitere inkrementelle Sicherungen nutzen?
    Muss ich für ein BareMetal überhaupt die AllCritical Option verwenden?

    VG
    Markus

  51. Hallo Markus!

    Meine Antwort hat wohl mehr verwirrt als geholfen, da sie nicht korrekt war… Sorry dafür!

    -allCritical schreibt ein ‚Bare Matel Image‘ inklusive dem ‚Systeme State‘ fürs Desaster Recovery…
    Das Vollbackup hat was mit der Einschränkung zu tun, die Microsoft für die Netzwerk Freigabe angibt (bis 2008 R2 und Win 7)…

    „If you save a backup to a remote shared folder, that backup will be overwritten if you use the same folder to back up the same computer again.“
    Siehe: https://technet.microsoft.com/de-DE/library/cc742083.aspx

    C (System) wird vollständig gesichert, D nur Systemrelevantes

    Interessantes zum Thema und ner möglichen Versionierung findest Du auch hier…
    https://social.technet.microsoft.com/Forums/windowsserver/en-US/3aed5ebe-7ad8-4b03-a948-ef064237db08/incremental-and-full-backups-using-wbadmin-and-task-scheduler-in-server-2008-r2?forum=windowsbackup

    Also, erst richtig lesen, dann lange nachdenken und am Ende erst Posten! Ich versuch das zukünftig mal zu beherzigen (^_-)… Sorry noch mal für die gestiftete Verwirrung!

    PS @Hannes… kannst Du meinen vorigen Eintrag mal als falsch markieren oder gar entfernen? Danke!

  52. Hab es jetzt nochmal getestet. Auch ohne AllCritical wird ein vollständiges Backup durchgeführt und nicht inkrementell.
    Ich verstehe immer noch nicht, warum das auf dem SBS funktioniert, aber auf dem Server R2 Enterprise nicht.

    VG
    Markus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.