Logo faq-o-matic.net
Logo faq-o-matic.net

Datenkopien pro Wochentag

von veröffentlicht am8. Juni 2011, 06:48 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Datensicherung, Scripting, Tools   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

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:

Download: Wochenbackup  Wochenbackup (701 bytes, 2.725-mal heruntergeladen, letzte Änderung am 6. Juni 2011)

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!