Backup/Archivierung mit Rsync unter Windows

Diese Anleitung richtet sich an Fachinformatiker mit entsprechender Ausbildung. 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 Benutzer-Daten und keine Betriebssystem-Pfade gesichert.

  • Obwohl nur differentiell gesichert wird, ist jedes Backup in sich vollständig. Was nach einem Widerspruch klingt, funktioniert über Deduplizierung: Eine ggü. der letzten Sicherung unveränderte Datei wird nicht neu geschrieben, sondern nur im Inhaltsverzeichnis des Dateisystem erneut verlinkt (Hardlink)

  • Es existieren mehrere Versionsstände nach Datum sortiert (Archivierung). So können auch ältere Versionsstände wiederhergestellt werden.

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

  • Die Datensicherung muss im Klartext abgespeichert 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 weiter 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

  • Nun wird die Datei "Datensicherung.cmd" mit dem Editor bearbeitet, um sie an eigene Bedürfnisse anzupassen. Hier sind die Zeilen 3 - 5 relevant:

  • Zeile 3: ":Sicherung" ist nach dem Namen des Sicherungsdatenträgers benannt. Bennenen Sie den für die Datensicherung verwendeten Datenträger in "Sicherung" (ohne Doppelpunkt) oder passen Sie die Zeile an den Namen ihres Sicherungsdatenträgers an. Der Doppelpunkt muss vor dem Namen des Sicherungsdatenträgers bestehen bleiben.

  • Zeile 4: "USER=Besitzer" . Hier geben Sie den Pfad ihres Benutzer-Profilverzeichnisses an. Das entspricht häufig dem Namen ihres Windows-Benutzers, kann sich aber bei Nutzung eines Microsoft-Kontos oder nach Unbenennen ihres Benutzernamens durchaus auch unterscheiden.

  • Zeile 5: Die Anzahl der zu behaltenden Backups werden mit set Anzahl=X eingestellt.
    Nutzung als Backup:
    - Tragen Sie hier eine 0 oder eine 1 ein: Es wird kein Unterordner mit Datumsangabe gespeichert, das Backup landet ohne Unterordner auf dem Sicherungslaufwerk
    - Nur die letzte Sicherung befindet sich auf dem Laufwerk. 

    Nutzung als Archivierung:
    - Tragen Sie hier eine Zahl ein, die gleich oder größer 2 ist.
    - Es wird ein Unterordner mit Datumsangabe gespeichert und entsprechend ihrem Eintrag alte Sicherungsstände behalten.

  • Beim Wechsel zwischen Backup- und Archivierungsmodus sollte das Sicherungslaufwerk formatiert werden, da das Laufwerk für den Archivierungsmodus zwingend leer sein muss.

  • Anpassen der zu sichernden Ordner:
    Die zu sichernden Ordner stehen in der Zeile _unterhalb_ der Zeile, die mit rsync beginnt. Hier sind die gängigen Ordner Dokumente/Bilder/Musik/Desktop/Downloads/Videos bereits eingetragen.
    Fügen Sie weitere Ordner nach dem gleichen Schema hinzu oder entfernen diese.
    Achten sie auf folgendes:
    - Fügen Sie keine leeren Zeilen in den rsync-Block ein. Es handelt sich um eine lange Befehlszeile, die auf mehrere Zeilen aufgeteilt ist. Ein Leerzeichen beendet die Befehlszeile und interpretiert die letzte Zeile als Laufwerksziel. Sie löschen hiermit einen der Ordner, den Sie eigentlich sichern wollen.

    - Setzen Sie "/" als Pfadtrenner statt den unter Windows gebräuchlichen "\". Cygwin erwartet das so.
    - Beenden Sie einen Befehl mit Leerzeichen + ^ . Sonst wird ggf. ein Quellpfad überschrieben.

    - Lassen Sie die letzte Zeile bestehen. Dies ist das Sicherungsziel.
  • 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 --chmod=ugo=rwX --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
RemoveDrive.exe %Drive% -L
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