Datensicherung auf externes Laufwerk mit Robocopy

Um die lokalen Daten von einem PC / Laptop auf ein externes Laufwerk (z.B. eine USB-Festplatte) oder ein Netzlaufwerk (z.B. ein NAS), benutze ich unter Windows 10 das Programm robocopy, das bereits bei Windows 10 und Windows Server 2012 R2 / 2016 enthalten ist.

Folgende Aufgaben sollen durch robocopy durchgeführt werden:

  • Speichern des Ordners C:\Dokumente nach E:\Dokumente
  • Speichern des Ordners C:\Projekte nach E:\Projekte
  • Speichern des Ordners C:\Software nach E:\Software

Dabei sollen die Ordner auf Laufwerk C:\ die Haupt-Ordner sein. Die Ordner auf Laufwerk E:\ sind reine Kopien zur Datensicherung. Wird z.B. eine Datei auf Laufwerk C:\ geändert, gelöscht oder verändert, so werden diese Änderungen durch robocopy auf das Laufwerk E:\ übernommen.

Wichtig: Wenn Ihr Dateien ändert, löscht oder neu auf Laufwerk E:\ erstellt, dann werden diese beim nächsten Aufruf der Batch-Datei überschrieben oder gelöscht. Der Chef ist also Laufwerk C:\!

Für die obige Aufgabe habe ich also eine Batch-Datei erstellt mit folgendem Inhalt:

echo@off
echo ######### Backup auf USB-Festplatte #########
echo ######### Backup c:\Dokumente #########
robocopy C:\Dokumente E:\Dokumente /ZB /FFT /DST /R:3 /W:1 /MIR /COPYALL /LOG+:"C:\temp\SichLog_USB.txt" /TEE /NDL
echo ######### Backup c:\Projekte #########
robocopy C:\Projekte E:\Projekte /ZB /FFT /DST /R:3 /W:1 /MIR /COPYALL /LOG+:"C:\temp\SichLog_USB.txt" /TEE /NDL
echo ######### Backup c:\Software #########
robocopy C:\Software E:\Software /ZB /FFT /DST /R:3 /W:1 /MIR /COPYALL /LOG+:"C:\temp\SichLog_USB.txt" /TEE /NDL
robocopy /quit
EXIT

In Zeile 4, 6 und 8 wird jeweils das Programm robocopy.exe aufgerufen. Für jeden zu sichernden Ordner habe ich eine eigene Zeile erstellt. Die ECHO-Befehle sind nicht notwendig für die Funktion, sie dienen lediglich der Anzeige während der Ausführung der Batch-Datei.

Der Benutzer unter dem robocopy ausgeführt wird benötigt Zugriffsrechte auf die zu sichernden Dateien und Ordner, sonst wird es nichts mit einer Datensicherung 😉

Verwendet werden in meinem Script folgende Optionen:

  • /ZB
    Verwendet den Neustartmodus. Im Fall einer Zugriffsverweigerung wird der Sicherungsmodus verwendet.
  • /FFT
    Kompensiert die Zeitunterschiede zwischen verschiedenen Dateisystemen (z.B. NTFS und einem NAS). Es handelt sich hierbei um eine Art Tolerant, der Wert beträgt 2 Sekunden. Das bedeutet, dass Dateien erst kopiert werden, wenn sich die Zeitstempel um mehr als 2 Sekunden unterscheiden.
  • /DST
    Kompensiert den Zeitunterschiede von einer Stunden bei Sommerzeit- und Winterzeitumstellung. Sonst würde robocopy die Dateien nach der Zeitumstellung als Alt betrachten und alles noch einmal kopieren.
  • /R:3
    Jeder Kopierversuch wird 3x wiederholt, ehe mit der nächsten Datei fortgefahren wird.
  • /W:1
    Die Wartezeit in Sekunden zwischen den Kopierversuchen. Hier 1 Sekunde.
  • /MIR
    Hiermit wird das komplette Verzeichniss gespiegelt. Werden Dateien in der Quelle (C:\) gelöscht, werden diese auch auf dem Ziel (E:\) gelöscht!
  • /COPYALL
    Kopiert alle Dateien, Rechte und Attribute der Dateien und Ordner
  • /LOG+:“C:\temp\SichLog_USB.txt“
    Der Status der aktuellen Datensicherung wird an eine vorhandene Log-Datei angehangen. Die Log-Datei wird bei entsprechend vielen Dateien und häufiger ausführung entsprechend Groß.
  • /TEE
    Gibt die Daten der Sicherung im Konsolenfenster und in der Log-Datei aus.
  • /NDL
    Verzeichnisnamen werden nicht mit protokolliert.

Hier noch eine kurze Übersicht über die möglichen Parameter von robocopy.exe. Diese kann man sich auf der Kommandozeile mit der Eingabe von „robocopy /?“ anzeigen lassen.
Hier die Übersicht der Windows 7 Version von robocopy:

——————————————————————————-
ROBOCOPY – Robustes Dateikopieren für Windows (Stand Windows 7)
——————————————————————————-
Syntax ROBOCOPY Quelle Ziel [Datei [Datei]…] [Optionen]
Quelle Quellverzeichnis (Laufwerk:\Pfad oder \\Server\Freigabe\Pfad)
Ziel Zielverzeichnis (Laufwerk:\Pfad oder \\Server\Freigabe\Pfad)
Datei Zu kopierende Dateien (Namen/Platzhalter: Standard ist „*.*“)
Kopieroptionen:
/S Kopiert Unterverzeichnisse, jedoch keine leeren Unterverzeichnisse.
/E Kopiert Unterverzeichnisse, einschließlich leerer Unterverzeichnisse.
/LEV:n Kopiert nur die obersten Ebenen der Quellverzeichnisstruktur.
/Z Kopiert Dateien im Neustartmodus.
/B Kopiert Dateien im Sicherungsmodus.
/ZB Verwendet den Neustartmodus. Im Fall einer Zugriffsverweigerung wird der Sicherungsmodus verwendet.
/EFSRAW Kopiert alle verschlüsselten Dateien im EFS RAW-Modus.
/COPY:copyflags  Gibt an, welche Inhalte für Dateien kopiert werden sollen (der Standard ist „/COPY:DAT“). (Kopierflags : D=Daten, A=Attribute, T=Zeitstempel). (S=Sicherheit=NTFS-ACLs, O=Besitzerinformationen, U=Überwachungsinformationen).
/DCOPY:T Kopiert Verzeichniszeitstempel.
/SEC Kopiert Dateien mit Sicherheitsinformationen (entspricht „/COPY:DATS“).
/COPYALL Kopiert alle Dateiinformationen (entspricht „/COPY:DATSOU“).
/NOCOPY Kopiert keine Dateiinformationen (eignet sich für die Verwendung mit „/PURGE“).
/SECFIX Korrigiert die Dateisicherheit in allen Dateien, auch in ausgelassenen Dateien.
/TIMFIX Korrigiert die Uhrzeitangaben für Dateien in allen Dateien, auch in ausgelassenen Dateien.
/PURGE Löscht Zieldateien/-verzeichnisse, die in der Quelle nicht mehr vorhanden sind.
/MIR Spiegelt eine Verzeichnisstruktur (Entspricht „/E“ mit „/PURGE“).
/MOV Verschiebt Dateien (löscht Dateien nach dem Kopieren an der Quelle).
/MOVE Verschiebt Dateien UND Verzeichnisse (löscht sie nach dem Kopieren an der Quelle).
/A+:[RASHCNET] Fügt die vorhandenen Attribute den kopierten Dateien hinzu.
/A-:[RASHCNET] Entfernt die vorhandenen Attribute von den kopierten Dateien.
/CREATE Erstellt eine Verzeichnisstruktur und nur Dateien mit einer Länge von Null.
/FAT Erstellt Zieldateien nur unter Verwendung von 8.3 FAT-Dateinamen.
/256 Deaktiviert die Unterstützung für sehr lange Pfade (> 256 Zeichen).
/MON:n Überwacht die Quelle. Wird erneut ausgeführt, wenn mehr als n Änderungen gefunden werden.
/MOT:m Überwacht die Quelle. Wird bei einer Änderung erneut ausgeführt in m Minuten.
/RH:hhmm-hhmm Ausführungsstunden – Steuert, wann neue Kopiervorgänge gestartet werden können.
/PF Überprüft die Ausführungsstunden pro einzelne Datei (nicht pro Durchgang).
/IPG:n Abstand zwischen Paketen (ms), um bei langsamen Verbindungen Bandbreite freizugeben.
/SL Kopiert symbolische Verknüpfungen gegenüber dem Ziel.
/MT[:n] Multithreadkopien mit n Threads erstellen (Standardwert: 8). n muss zwischen 1 und 128 (jeweils einschließlich) liegen. Die Option ist nicht mit „/IPG“ und „/EFSRAW“ kompatibel. Die Ausgabe kann mit „/LOG“ umgeleitet werden, um eine bessere Leistung zu erzielen.
Dateiauswahloptionen:
/A Kopiert nur Dateien mit dem „Archive“-Attribut.
/M Kopiert nur Dateien mit dem „Archive“-Attribut und setzt das Attribut zurück.
/IA:[RASHCNETO] Schließt nur Dateien ein, bei denen eines der Attribute festgelegt ist.
/XA:[RASHCNETO] Schließt Dateien aus, bei denen eines der Attribute festgelegt ist.
/XF Datei[Datei] Schließt Dateien aus, die mit den angegebenen Namen/Pfaden/Platzhaltern übereinstimmen.
/XD Verz.[Verz.] Schließt Verzeichnisse aus, die mit den angegebenen Namen/Pfaden übereinstimmen.
/XC Schließt geänderte Dateien aus.
/XN Schließt neuere Dateien aus.
/XO Schließt ältere Dateien aus.
/XX Schließt zusätzliche Dateien und Verzeichnisse aus.
/XL Schließt einsame Dateien und Verzeichnisse aus.
/IS Schließt identische Dateien ein.
/IT Schließt optimierte Dateien ein.
/MAX:n Maximale Dateigröße – schließt Dateien aus, die größer als n Bytes sind.
/MIN:n Minimale Dateigröße – schließt Dateien aus, die kleiner als n Bytes sind.
/MAXAGE:n Maximales Dateialter – schließt Dateien aus, die älter als n Tage/Datum sind.
/MINAGE:n Minimales Dateialter – schließt Dateien aus, die neuer als n Tage/Datum sind.
/MAXLAD:n Maximales Datum des letztes Zugriffs – schließt Dateien aus, die seit n nicht verwendet wurden.
/MINLAD:n Minimales Datum des letztes Zugriffs – schließt Dateien aus, die seit n verwendet wurden. (Wenn n < 1900, dann ist n = n Tage, andernfalls ist n = Datum im Format JJJJMMTT).
/XJ Schließt Abzweigungspunkte aus (werden normalerweise standardmäßig eingeschlossen).
/FFT Geht von FAT-Uhrzeitangaben für Dateien aus (Granularität von zwei Sekunden).
/DST Kompensiert Zeitunterschiede von einer Stunden aufgrund der Sommerzeit.
/XJD Schließt Abzweigungspunkte für Verzeichnisse aus.
/XJF Schließt Abzweigungspunkte für Dateien aus.
Wiederholungsoptionen:
/R:n Anzahl von Wiederholungsversuchen bei fehlerhaften Kopiervorgängen. Der Standardwert ist 1 Million.
/W:n Wartezeit zwischen Wiederholungsversuchen. Der Standardwert ist 30 Sekunden.
/REG Speichert „/R:n“ und „/W:n“ in der Registrierung als Standardeinstellungen.
/TBD Wartet darauf, dass Freigabenamen definiert werden (Wiederholungsfehler 67).
Protokollierungsoptionen :
/L Listet nur auf. Es werden keine Kopiervorgänge ausgefhrt, Zeitstempel erstellt oder Dateien gelöscht.
/X Meldet alle zusätzlichen Dateien, nicht nur die ausgewählten Dateien.
/V Erstellt eine ausführliche Ausgabe mit ausgelassenen Dateien.
/TS Schließt Zeitstempel von Quelldateien in die Ausgabe ein.
/FP Schließt den vollständigen Pfadnamen von Dateien in die Ausgabe ein.
/BYTES Gibt Größen in Bytes aus.
/NS Keine Größe – Dateigrößen werden nicht protokolliert.
/NC Keine Klasse – Dateiklassen werden nicht protokolliert.
/NFL Keine Dateiliste – Dateinamen werden nicht protokolliert.
/NDL Keine Verzeichnisliste – Verzeichnisnamen werden nicht protokolliert.
/NP Kein Status – der Prozentsatz kopierter Elemente wird nicht angezeigt.
/ETA Zeigt die ungefähre Empfangszeit der kopierten Dateien an.
/LOG:Datei Gibt den Status der Protokolldatei aus (überschreibt das vorhandene Protokoll).
/LOG+:Datei Gibt den Status der Protokolldatei aus (wird an das vorhandene Protokoll angefügt).
/UNILOG:Datei Gibt den Status der Protokolldatei als UNICODE aus (überschreibt das vorhandene Protokoll).
/UNILOG+:Datei Gibt den Status der Protokolldatei als UNICODE aus (wird an das vorhandene Protokoll angefügt).
/TEE Gibt Daten in das Konsolenfenster und die Protokolldatei aus.
/NJH Kein Auftragsheader.
/NJS Keine Auftragszusammenfassung.
/UNICODE Gibt den Status als UNICODE aus.
Auftragsoptionen:
/JOB:Auftragsname Übernimmt Parameter aus der angegebenen Auftragsdatei.
/SAVE:Auftragsname Speichert Parameter in der angegebenen Auftragsdatei.
/QUIT Beendet den Vorgang nach der Verarbeitung der Befehlszeile (zum Anzeigen von Parametern).
/NOSD Es ist kein Quellverzeichnis angegeben.
/NODD Es ist kein Zielverzeichnis angegeben.
/IF Schließt die folgenden Dateien ein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.