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 ausgefhrt, 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. |