Backup/Archivierung mit Rsync unter Windows

Diese Anleitung richtet sich an Menschen, die wissen was sie tun. Eine falsche Bedienung kann dazu führen, dass Daten gelöscht werden, die sie eigentlich sichern möchten.

Positive Eigenschaften von diesem und anderen guten Backup Programmen

  • Geschwindigkeit: Geringe Hürde ein Backup zu starten. Es werden nur differentielle Änderungen der Nutzdaten und keine Betriebssysteminstallationen gesichert

  • Obwohl nur differentiell gesichert wird, ist jedes Backup in sich vollständig. Was nach einem Widerspruch klingt, funktioniert über Deduplizierung: Ein bestehender Datenblock wird erneut im Inhaltsverzeichnis des Dateisystem verlinkt (Hardlink)

  • Es existieren mehrere Versionsstände nach Datum sortiert, um ältere Versionsstände von Dateien wiederherstellen zu können.

  • Alte Backup-Stände werden regelmäßig automatisch gelöscht, damit der Sicherungsdatenträger nicht voll läuft.

  • Die Dateien müssen im Klartext vorhanden sein und nicht in kryptischen Archiven, damit man das Backup schnell und einfach prüfen kann und keine spezielle Software zur Wiederherstellung benötigt. Archive bringen bei vorkomprimierten Nutzdaten ohnehin keinen Platzvorteil mehr. (Office-Dokumente und Fotos/Videos lassen sich nicht mehr komprimieren)


Anmerkungen und Hinweise

  • Im Backup-Ziel wird eine Verknüpfung namens "__letzte_Sicherung" erstellt. Diese wird als Referenz für die zuletzt gesicherten Dateien genutzt. Wenn diese Verknüpfung gelöscht wird, werden beim nächsten Backup automatisch alle Dateien neu erstellt, statt nur die Änderungen. Das kostet Zeit und Speicherplatz, kann aber ggf. in manchen Situationen erwünscht sein.

  • Der Name des Backup-Ziels beinhaltet das Datum, jedoch keine Uhrzeit. Es können daher keine zwei Backups je Tag gespeichert werden. Sofern das Backup am gleichen Tag erneut gestartet wird, wird das bestehende Backup vom gleichen Tag aktualisiert.

 

Bedienungsanleitung

  • Download inkl. Rsync: hier

  • Download in einen Ordner entpacken, z.B. C:\Datensicherung

  • Verknüpfung von Datensicherung.cmd auf dem Desktop erstellen

  • ":Sicherung" in Zeile 3 ist nach dem Namen des Sicherungsdatenträgers benannt. Entweder den Sicherungsdatenträger "Sicherung" benennen oder die Zeile ändern in den Namen des Sicherungslaufwerkes, wobei der Doppelpunkt bestehen muss.

  • Die Zeile "USER=Besitzer" muss nach dem Ordner des eigenen Benutzerverzeichnis benannt werden.

  • Die Anzahl der zu behaltenden Backups werden mit set Anzahl=X eingestellt.
    Wird dieser Wert auf einen Wert kleiner als 1 gesetzt, wird keine Archivierung durchgeführt. Die Sicherung erfolgt dann direkt auf dem Sicherungslaufwerk.
    Wird dieser Wert auf einen Wert 2 oder größer gesetzt, wird die Sicherung in einen nach dem Datum benannten Unterordner durchgeführt.

  • Beim Wechsel vom Backup Modus zum Archivierungsmodus sollte das Sicherungslaufwerk formatiert werden, da das Laufwerk für den Archivierungsmodus zwingend leer sein muss.

  • Die zu sichernden Ordner stehen in der Zeile _unterhalb_ von rsync. Hier sind die gängigen Ordner Dokumente/Bilder/Musik/Desktop/Downloads/Videos bereits eingetragen. Es können weitere Ordner nach dem gleichen Schema eingetragen werden, welche gesichert werden sollen. Achten sie auf die "normalen" Schrägstriche (kein Backslash), die Cygwin-Laufwerkspfade, als auch das Leerzeichen gefolgt vom Akzent-Zeichen am Ende der Zeile.

  • Die letzte cygdrive-Zeile gibt den Zielordner an und muss in dieser Form bestehen bleiben. Das ist wichtig, weil ansonsten der letzte zu sichernde Ordner als Ziel verwendet und somit gelöscht [sic!] wird.

  • Der Sicherungsdatenträger muss mit NTFS formatiert werden um Hardlinks zu erlauben. FAT32 und exFAT funktionieren nicht.

Ausführung

  • Gestartet wird der Backup-Vorgang nach Einstecken des "Sicherung"-Datenträgers mit einem Doppelklick auf die Datei "Datensicherung.cmd" bzw. dessen Verknüpfung

 

Erfolgreiche Sicherung:

 

 

Nicht erfolgreiche Sicherung:

Mit Fehlermeldung...

Skript

@echo off &call :init

:Sicherung
set USER=Besitzer
set Anzahl=1

call :print "STARTE SICHERUNG - Laufwerk %Drive%" 4 REM
if %Anzahl% GTR 1 call :ExecuteBackup %ISODATE% "--link-dest=/cygdrive/%Drive%/__letzte_Sicherung/"

:ExecuteBackup
color 3f
rsync -auv --delete %2 ^
/cygdrive/c/Users/%USER%/Documents ^
/cygdrive/c/Users/%USER%/Desktop ^
/cygdrive/c/Users/%USER%/Pictures ^
/cygdrive/c/Users/%USER%/Downloads ^
/cygdrive/c/Users/%USER%/Music ^
/cygdrive/c/Users/%USER%/Videos ^
/cygdrive/c/Users/%USER%/AppData/Roaming/Mozilla/Firefox ^
/cygdrive/c/Users/%USER%/AppData/Roaming/Thunderbird ^
/cygdrive/%Drive%/%1

if not %Anzahl% GTR 1 call :Fertig 

:Aufraeumen
color 6f & call :print "Entferne alte Backups - %Drive%" 2 REM
for /f "skip=%Anzahl% delims=" %%i in ('dir "%Drive%:" /a:d-s-h /b /o:-N') do (
   echo Entferne "%Drive%:\%%i"
   rd /s /q "%Drive%:\%%i"
)
echo. 
echo Erstelle Symbolische Verknuepfung zu Verzeichnis __letzte_Sicherung
rmdir %Drive%:\__letzte_Sicherung
mklink /J %Drive%:\__letzte_Sicherung %Drive%:\%ISODATE% 

:Fertig
color 2f & call :print "SICHERUNG ERFOLGREICH - Laufwerk %Drive%" 30
exit

:init
color f0
setlocal enabledelayedexpansion
set ISODATE=%date:~-4%-%date:~-7,2%-%date:~-10,2%
for /F "skip=1 tokens=1,2,* delims=:" %%a in ('wmic logicaldisk where "DriveType=2 OR DriveType=3" get name^, volumename') do (
	set Drive=%%a
	set Label=%%b %%c
	set Label=!Label: =!
	call :!Label!  
)
color 4f & call :print "Kein Backup-Laufwerk angeschlossen!" 20
exit

:print
cls
echo ====================================
echo %1
choice /N /C 1 /T %2 /D 1 /M ====================================
%3 msg %USERNAME% Backup meldet: %1

Telefon: 02133-86 88 044
E-Mail: mail (at) krause-computer.de

Mo.–Fr.: 09:00–18:00 Uhr