Methoden zur Datensicherung gibt es wie Sand am Meer. Ein einfacher, je nach Situation aber sehr leistungsfähiger Ansatz besteht in einfachen Dateikopien, die man durch Betriebssystembefehle erzeugen kann. Seit Windows Vista ist dafür das flexible Programm “robocopy” im Betriebssystem enthalten, das über einen sehr großen Satz an Funktionen verfügt.
Die folgende Skriptlösung zeigt, wie man mit robocopy ein Datensicherungssystem aufbauen kann, das täglich die Änderungen eines Datenbestandes in einen Tages-Ordner kopiert. Hierbei erzeugt das Skript für jeden Wochentag (Montag, Dienstag usw.) einen Ordner und legt dort die gesamten Daten der Quelle ab. Als Ergebnis erhält man ein tagesaktuelles, versioniertes Backup seiner Daten, das tageweise bis zu einer Woche zurückreicht. Die tatsächliche Dateiauswahl kann man über die Parameter von robocopy anpassen.
Zunächst muss das Skript ein Problem lösen: In der Standard-Shell gibt es keine zuverlässige Möglichkeit, den Wochentag zu bestimmen. Daher nutzt die Lösung ein separates VBS-Skript, das diese Aufgabe erledigt. Es gibt beim Aufruf den Namen des Wochentages zurück. Über einen FOR-Trick liest das Batch den Tag ein und legt ihn in der Variablen %Day% ab.
Den Rest erledigt dann der robocopy-Aufruf. In der hier vorliegenden Variante nutzt er die Mirror-Funktion, d.h. er erzeugt eine Kopie der Quelldaten mitsamt ihrer Ordnerstruktur im Zielordner. Dabei muss robocopy nur die Daten kopieren, die nicht bereits am Ziel liegen – ab der zweiten Woche kopiert es also nur das, was sich gegenüber der vorherigen Woche geändert hat. Gelöschte Quelldateien entfernt es auch am Ziel. Auf diese Weise lassen sich Änderungen bis zu sechs Tage lang in Tagesschritten manuell wiederherstellen.
Skript 1: Das Backup-Batch (Wochenbackup.bat)
@echo off REM Umgebung festlegen SET Source="C:\Daten\Wichtig" SET Target="D:\Backups" REM In Skript-Ordner wechseln CD %0\..\ REM Ordner fuer Wochentag identifizieren und ggf. anlegen FOR /F "usebackq" %%I IN (`cscript Wochentag.vbs`) DO SET Day=%%I IF NOT EXIST %Target%\%Day% md %Target%\%Day% REM Kopierjob 1 ROBOCOPY %Source% %Target%\%Day% /Z /MIR /MT /R:3
Skript 2: Bestimmen des Wochentags per VBS (Wochentag.vbs)
Select Case WeekDay(Now) Case 1 strTag = "Sonntag" Case 2 strTag = "Montag" Case 3 strTag = "Dienstag" Case 4 strTag = "Mittwoch" Case 5 strTag = "Donnerstag" Case 6 strTag = "Freitag" Case 7 strTag = "Samstag" End Select WScript.Echo strTag
Und hier der Download der Skripte:
Wochenbackup (701 bytes, 3.341-mal heruntergeladen, letzte Änderung am 6. Juni 2011)
http://faq-o-matic.net/?p=3189