Windows: Robocopy-Backup mit Versionen
Mit einem simplen Skript lässt sich eine Datensicherung auf Basis von Robocopy und mit verschiedenen Versionen realisieren. So hat man nicht nur eine Kopie-Sicherung, sondern kann mehrere Versionen wie z.B. Tage, Wochen, Monate, je nachdem wie oft man es ausführt, zurück gehen.
Klar, es wird Code-Recycling von Drive Snapshot gemacht:
Windows: Versions-basierte Drive Snapshot-Sicherungen
Daraus folgen für Robocopy diese Skript-Zeilen:
@echo off rem Konfiguration set Source=C:\Projekte set Destination=D:\Backup set NumberOfVersionsToKeep=7 rem Version.txt pruefen, falls diese nicht existiert, dann anlegen if not exist Version.txt echo %NumberOfVersionsToKeep% > Version.txt rem Version auslesen und ggf. festlegen set /p Version=< Version.txt set Version=%Version: =% set /A Version=Version %% NumberOfVersionsToKeep + 1 echo %Version% > Version.txt rem Ziel-Ordner pruefen und ggf. anlegen if not exist "%Destination%\%Version%" mkdir "%Destination%\%Version%" rem Robocopy ausfuehren robocopy "%Source%" "%Destination%\%Version%" /mir /r:0 /w:0 /np /log:robocopy-%Version%.log

Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Pingback: Windows: Robocopy mit VSS (Schattenkopie) – Andy's Blog
Die angegebene Methode zur Versionierung hat den Nachteil, dass man erst nachschauen muss, welches die aktuelle Version ist. Folgende Zeilen reichen, damit die Versionen ab 1 immer älter werden:
rem Höchste Version wird zur 1 als Basis der neuesten Version
if exist “%BackupZiel%%NumberOfVersionsToKeep%” rename “%BackupZiel%%NumberOfVersionsToKeep%” “0”
rem Bestehende Versionen von hinten an hochsetzen: Name des Ordners um 1 erhöhen
for /l %%i in (%NumberOfVersionsToKeep%,-1,1) do (
set /a “PrevVersion=%%i – 1”
if exist “%BackupZiel%!PrevVersion!” rename “%BackupZiel%!PrevVersion!” “%%i”
)