BackupAssist ER: Jobs nach verpassten Start nachholen

Einen Makel den es (noch) in BackupAssist ER gibt ist eine fehlende Möglichkeit, bei einem verpassten Startzeitpunkt den oder die Backup-Job(s) nachholen zu lassen.

Wird ein geplanter Zeitpunkt verpasst wartet das Programm bis zum nächsten geplanten Start der Jobs und führt erst dann wieder eine Datensicherung durch. Ist das System zu diesem Zeitpunkt wieder ausgeschaltet kann es vorkommen, das die nächste Sicherung erst in relativ weiter Zukunft falls überhaupt stattfindet.

Bei Servern, die in der Regel dauerhaft laufen, geschieht dies eher selten, außer zum geplanten Zeitpunkt ist das System z.B. wegen der Installation von Updates, einer Wartung oder ähnlichem gerade Offline.

Bei anderen Systemen wie PCs und Notebooks, die nicht im Dauerbetrieb sind, stellt sich die Sache etwas anders da. Ein Workaround kann darin bestehen, den geplanten Startzeitpunkt für die Datensicherung in die Nacht zu verlegen und das System per Wake-on-LAN (WoL) zu starten. Für PCs ist das durchaus machbar und praktikabel, bei Notebooks funktioniert das oft nicht, außer sie befinden sich gerade in der Dockingstation und WoL wird unterstützt. Oft ist letzteres bei Dockingstations die mittels USB verbunden werden allerdings nicht der Fall.

Eine weitere Möglichkeit ist den Startzeitpunkt auf eine Uhrzeit zu setzen, an dem das System sicher nicht läuft und dann mittels Windows-Aufgabe die Jobs zu starten bzw. so schnell wie möglich nach einem verpassten Startzeitpunkt nachzuholen.

Der Befehl hierzu lautet:

"C:\Program Files (x86)\BackupAssist ER V1\BackupAssistManualLauncher.exe" <Job-Nr> -u -d

Statt “-u -d” kann auch “-i” verwendet werden:

Der relevante Punkt bei der Konfiguration der Aufgabe ist dieser hier:

Mittels Batch-Skript, das z.B. als Aufgabe ausgeführt wird, lässt sich prüfen wann die letzte Datensicherung stattgefunden hat und bei Überschreiten eines Zeitraums dann die Datensicherung starten:

@echo off

rem Konfiguration

 rem 1 Stunde
 rem set Period=3600000

 rem 12 Stunden
 rem set Period=43200000

 rem 24 Stunden / 1 Tag
 rem set Period=86400000

 rem 48 Stunden / 2 Tage
  set Period=172800000

 rem 3 Tage
 rem set Period=259200000

 rem 7 Tagen
 rem set Period=604800000

rem Das Ereignisprotokoll auswerten

 wevtutil qe Application /q:"*[System[Provider[@Name='BackupAssist'] and (EventID=5632) and TimeCreated[timediff(@SystemTime) <= %Period%]]]" /c:1 /f:text /rd:true | find "Date"

rem Wenn "Date" nicht in der Ausgabe gefunden wurde, d.h. keine Datensicherung im definierten Zeitraum erfolgt ist, dann folgenden Befehl ausfuehren

 if %errorlevel%==1 (
  "C:\Program Files (x86)\BackupAssist ER V1\BackupAssistManualLauncher.exe" 1 -u -d
  "C:\Program Files (x86)\BackupAssist ER V1\BackupAssistManualLauncher.exe" 2 -u -d
 )

In diesem Beispiel wird spätestens nachdem zwei Tage lang keine Datensicherung gelaufen ist, die beiden Backup-Jobs (Backup-to-Disk-to-Cloud) gestartet. Nachfolgend ein paar Erläuterungen zu diesem Skript:

Mit Hilfe des Befehls “wevtutil” kann das Windows-Ereignisprotokoll abgefragt werden. Möchte man nun nach der Quelle “BackupAssist” und der EventID “5632” suchen, sieht der Befehl und dessen Ausgabe so aus:

C:\Users\Andy>wevtutil qe Application /q:"*[System[Provider[@Name='BackupAssist'] and (EventID=5632)]]" /c:1 /f:text /rd:true
Event[0]:
Log Name: Application
Source: BackupAssist
Date: 2021-08-12T12:03:37.0330000Z
Event ID: 5632
Task: N/A
Level: Informationen
Opcode: Info
Keyword: Klassisch
User: N/A
User Name: N/A
Computer: w10-cloud-backup
Description:
Starten des Jobs "Job (1) - S3-kompatible Cloud-Speicherung" zur geplanten Uhrzeit: 13.08.2021 07:05

Job-Verfahren: Cloud
Ziel: S3-kompatibles Bucket

Es wird das Ereignisprotokoll “Anwendung” (“Application”) durchsucht, die eigentliche Abfrage befindet sich ab “/q:”, es wird mit “/c:1” nur nach einem Ereignis gesucht, die Ausgabe erfolgt mit “/f:text” als Text und die Reihenfolge soll von neuestem zu ältesten Eintrag sein (“/rd:true”).

Wie man oben erkennen kann, gibt es “Date:” nur, wenn in dem definierten Zeitraum ein Ereignis gefunden wurde, andernfalls bleibt die Ausgabe leer. Da “wevtutil” keinen Rückgabewert (Errorlevel) liefert, wird die Ausgabe mit “find” nach “Date” durchsucht.

Wird “Date” gefunden geschieht nichts weiter, wird es allerdings nicht gefunden, werden die Backup-Jobs ausgeführt. “BackupAssistManualLauncher.exe” setzt die Backup-Jobs dabei in die Warteschlange, die der Reihe nach abgearbeitet wird, daher ist es kein Problem mehrmals diesen Befehl hintereinander mit unterschiedlichen Job-Nummern auszuführen.

Tipp: Um die richtige Syntax für die Abfrage (Query, “/q:”) zu ermitteln, kann die Ereignisanzeige von Windows verwendet werden. Klickt man dort auf “Aktuelles Protokoll filtern” kann man die gewünschten Werte einstellen und auf der Registerkarte “XML” die Abfrage einsehen:

Quellen

Mittels Batch/CMD:

Microsoft – Wevtutil

SYSTEM CENTER CONFIGURATION MANAGER NOTES – Useful WEvtUtil commands

Via PowerShell:

Petri – How To Search the Windows Event Log with PowerShell

WebbTechSolutions – Using PowerShell To Search The Event Log

2 Kommentare

Schreibe einen Kommentar

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