Daten sichern, spiegeln, synchronisieren

Robocopy: Daten schnell und einfach unter Windows sichern

23.08.2015 von Thomas Joos
Daten unter Windows und Windows Server inkrementell sichern, spiegeln oder synchronisieren - mit dem Bordwerkzeug Robocopy erledigt man dies am schnellsten. Zu Recht ist Robocopy seit geraumer Zeit auch eines der beliebtesten Kommandozeilentools unter Windows.

Mal eben ein Verzeichnis spiegeln, Dateien regelmäßig sichern oder komplexe Kopieraufgaben - mit Robocopy lässt sich derlei meist am schnellsten erledigen. Robocopy ist ein Befehlszeilentool, welches ähnlich wie Xcopy funktioniert, aber deutlich mehr Möglichkeiten bietet. Das klappt unter Windows 10 ebenso gut wie unter Windows 7 oder Windows 8/8.1

Mit Robocopy sind sehr komplexe Dateireplizierungsaufgaben möglich. Das Tool spiegelt Verzeichnisse deutlich schneller als die meisten Synchronisierungstools mit grafischen Oberflächen. Zwar ist die Erstellung eines Skriptes zunächst etwas aufwendig, dafür läuft der Kopiervorgang wesentlich schneller ab als mit vielen Tools. Zum Beispiel können Sie mit Robocopy vollständig gespiegelte Duplikate von zwei Dateistrukturen einschließlich aller Unterverzeichnisse und Dateien anlegen.

Mit Robocopy lassen sich sehr umfangreiche Datensicherungsskripte erstellen. Das Tool unterstützt außerdem alle verbundenen Dateiinformationen, einschließlich der Datums- und Zeitstempel, Sicherheitszugriffssteuerungslisten (Access Control Lists, ACL) und vieles mehr.

Vor allem für kleinere Unternehmen kann die Datensicherung per Skript über robocopy.exe sehr effizient sein. Mit dem Tool lassen sich ohne großen Aufwand sehr effiziente Backupaufgaben erledigen. Robocopy unterstützt das Logging in Protokolldateien, kann allerdings nicht auf Bandlaufwerke zugreifen, sondern ist hauptsächlich für die Datensicherung auf externe Festplatten oder Netzlaufwerke gedacht.

Vielfältige Einsatzmöglichkeiten

Das Tool kann auch Windows-Berechtigungen kopieren und Dateien verschieben und löschen, nicht nur kopieren. Das Werkzeug verfügt über eine Vielzahl von Optionen und kann zum Beispiel per Skript ein Verzeichnis mit einem anderen 1:1 abgleichen, auch mehrmals täglich. Es ist auch möglich, nur veränderte Dateien zu kopieren und gelöschte Dateien des einen Verzeichnisses auf dem anderen zu löschen.

Mit diesen Möglichkeiten können Unternehmen schnell und leicht spiegeln und so Datenverlust vorbeugen, unabhängig von einem Datensicherungskonzept. Robocopy kann Verzeichnisse mit Unterverzeichnissen kopieren und dabei einzelne Dateien ausschließen.

Der Zeitstempel von Dateien lässt sich auslesen, so kann man auf Basis des Erstellungs- oder Änderungsdatums Dateien kopieren oder auch löschen. Wenn Sie häufig ein Verzeichnis über das Netzwerk spiegeln wollen, lässt sich mit dem Tool deutlich Zeit sparen, da Sie zum Beispiel nur veränderte Dateien kopieren müssen und bereits vorhandene einfach übergehen können.

Wer Robocopy übrigens mehr Komfort verleihen will, der sollte sich die Gratis-GUI YARCGUI näher ansehen.

YARCGUI
Die Auftragsliste ist das zentrale Element von YARCGUI.
YARCGUI
Man kann mit der Oberfläche mehrere Robocopy-Versionen im Einsatz halten.
YARCGUI
Die gängigsten Kopieroptionen wie bespielsweise Spiegeln sind in einem Reiter zusammengefasst.
YARCGUI
Einzelne Kopierflags wie Attribute oder Zeitstempel lassen sich einfach hinzufügen.
YARCGUI
Jedem Auftrag lassen sich auch Parameter aus einer vorhandenen Datei zuweisen.
YARCGUI
Robocopy erlaubt komplexe Dateiauswahlparameter,die hier zusammen gefasst sind.
YARCGUI
Sollen die Dateien ein Mindestalter oder eine Mindestgröße besitzen, läßt sich dies gleichfalls einschränken.
YARCGUI
Für den einzelnen Kopierauftag läßt sich ein Logfile anlegen.
YARCGUI
Nach Abarbeitung des Auftrags wird ein Protokoll zurückgeliefert.
YARCGUI
Eine Übersicht liefert alle Detailangaben zum Kopierauftrag.
YARCGUI
Einzelne Aufträge lassen sich als Skript abspeichern.

Befehlszeilen-Parameter von Robocopy

Die Befehlszeile von Robocopy sieht folgendermaßen aus:

Robocopy <Quelle> <Ziel>< Datei(en)>/< Option>

Platzhalter sind erlaubt. Wenn Sie keine Dateien oder Platzhalter eingeben, verwendet Robocopy standardmäßig (*.*), kopiert also alle Dateien. Quelle und Ziel können ein Verzeichnis, ein Laufwerk oder auch ein UNC-Pfad sein (\\<Server>\<Freigabe>). Die Optionen werden hinter dem Befehl angehängt. Sie können beliebig viele Optionen miteinander kombinieren:

Optionen für Robocopy

Option

Funktion

/S

Kopiert Unterverzeichnisse (außer leere Verzeichnisse).

/E

Kopiert Unterverzeichnisse (auch leere Verzeichnisse).

/LEV:n

Kopiert nur bis zu einer Verzeichnistiefe von n. Die restlichen Verzeichnisse werden nicht kopiert.

/Z

Wenn der Kopiervorgang unterbrochen wird, können Sie mit dieser Option an der Stelle weitermachen, an der abgebrochen wurde. Es können aber nicht alle Dateien kopiert werden.

/B

Dateien werden im Backup-Modus kopiert. Es werden also alle Dateien kopiert, auch diejenigen mit denen die Option /Z Probleme hat.

/ZB

Es wird zunächst die Option /Z probiert. Schlägt das bei einer Datei fehl, verwendet Robocopy die Option /M.

/COPY:copyflags

Kopiert nur die Dateiattribute, die definiert werden. Dazu muss das Dateisystem auf dem Quell- und dem Zielverzeichnis im NTFS-Format formatiert sein. D - Daten, S - Sicherheit (NTFS ACLs), A -Attribute, O - Besitzer-Informationen, T - Zeitstempel, U - Informationen zur Überwachung. Standardmäßig kopiert Robocopy nur mit der Option /COPY:DAT. Überwachung, Sicherheit und Datenbesitzer werden standardmäßig nicht kopiert.

/COPYALL

Kopiert alles, also wie /COPY:DATSOU (s.o.)

/NOCOPY

Es wird nichts kopiert (nur sinnvoll für Spiegelung, wenn gelöscht werden soll)

/SEC

Entspricht dem Schalter /COPY:DATS. Sicherheitsinformationen und ACLs werden kopiert.

/MOV

Löscht nach dem Kopieren die Quelldatei.

/MOVE

Verschiebt Dateien und Verzeichnisse

/PURGE

Löscht Dateien und Verzeichnisse im Ziel-Verzeichnis, die auf dem Quell-Verzeichnis nicht mehr vorhanden sind.

/MIR

Spiegelt ein komplettes Verzeichnis. Löscht also auch Dateien im Ziel, die in der Quelle nicht mehr vorhanden sind.

/A+:{R|A|S|H|N|T}

Ändert die Dateiattribute beim Kopieren: R - Read only, S - System, N - Not content indexed, A - Archive, H - Hidden, T - Temporary

/A-:{R|A|S|H|N|T}

Löscht die Dateiattribute beim Kopieren: R - Read only, S - System, N - Not content indexed, A - Archive, H - Hidden, T - Temporary

/CREATE

Erstellt leere Verzeichnisse, wenn in der Quelle auch vorhanden.

/FAT

Ändert die Dateinamen ab, damit sie dem 8.3-Format entsprechen, also maximal acht Zeichen vor und drei nach dem Punkt.

/FFT

Kopiert auf Systeme, die nur kompatibel zu NTFS sind, aber eigentlich nur das FAT-Dateisystem beherrschen (wird eher selten benötigt).

/MON:n

Zählt die Änderungen von Dateien im Quell-Verzeichnis mit und startet nach n Änderungen den Kopiervorgang nach dem Zeitraum der mit /MOT (s.u.) definiert wird. Verwenden Sie diese Option um robocopy im Hintergrund laufen zu lassen.

/MOT:n

Führt den Kopiervorgang nach n Minuten wieder aus. In Kombination mit /MON möglich.

/RH:hhmm-hhmm

Definiert, innerhalb welcher Zeit kopiert werden darf. Die Werte sind im 24 Stunden-Format angegeben und müssen im Format 0000 bis 2359 eingegeben werden.

/PF

Die Option ist optimal, wenn ein laufender Kopiervorgang über den mit /RH definierten Zeitraum hinausgeht. Der Kopiervorgang kann so schneller abgeschlossen werden.

/IPG:n

Mit dieser Option wird nach 64 KB n Millisekunden gewartet, bevor weiterkopiert wird. Vor allem für Kopiervorgänge zwischen Niederlassungen kann so die Bandbreite eingespart werden.

/IA:{R|A|S|H|C|N|E|T|O}

Kopiert nur Dateien mit den definierten Attributen: R - Read only, A - Archive, S - System, H - Hidden, C - Compressed, N - Not content indexed, E - Encrypted, T - Temporary, O - Offline

/XA:{R|A|S|H|C|N|E|T|O}

Kopiert keine Dateien mit den definierten Attributen:R - Read only, A - Archive, S - System, H - Hidden, C - Compressed, N - Not content indexed, E - Encrypted, T - Temporary, O - Offline

/A

Kopiert nur Dateien, in denen die Eigenschaft Archiv gesetzt wurde (kann man über die Eigenschaften einer Datei durchführen).

/M

Wie /A, allerdings wird das Archiv-Attribut in der Quell-Datei zurückgesetzt.

/XF file [file]

Kopiert diese Dateien nicht. Sie können mehrere hintereinander schreiben. Diese Option setzen Sie am Ende des Befehls. Sie können auch mit * als Platzhalter arbeiten.

/XD dir [dir]

Kopiert diese Verzeichnisse nicht. Auf diese Weise können Sie Unterverzeichnisse beim Spiegeln überspringen lassen, indem Sie deren Pfad im Befehl angeben.

/XC

Schließt Dateien aus, die im Quell-Verzeichnis als »geändert« markiert sind.

/XN

Kopiert keine Dateien, die im Quell-Verzeichnis als neuer deklariert sind.

/XO

Wie /XN, nur werden Dateien nicht kopiert, die im Quell-Verzeichnis als älter definiert sind.

/MAX:n

Dateien, die größer als n Bytes sind, werden nicht kopiert.

/MIN:n

Kopiert keine Dateien, die kleiner als n Bytes sind.

/MAXAGE:n

Kopiert keine Dateien, die älter als n Tage sind. Sie können n auch als Datum in der Form von YYYYMMDD angeben.

/MINAGE:n

Kopiert keine Dateien, die neuer sind. Syntax wie oben.

/MAXLAD:n

Kopiert keine Dateien, auf die vor n Tagen nicht zugegriffen wurde (Syntax s.o.).

/MINLAD:n

Wie /MAXLAD, nur nach n Tagen, also neuere Dateien.

/R:n

Definiert die maximalen Fehler, die beim Kopieren übergangen werden (standardmäßig 1 Mio.).

/W:n

Definiert die Sekunden, die gewartet wird, wenn ein Kopiervorgang nicht erfolgreich war, um es erneut zu versuchen.

/REG

Speichert /R und /W in der Registry als Standardwert für weitere Robocopy-Jobs.

/L

Gibt nur eine Liste der Dateien aus, führt aber keinen Kopiervorgang durch. Die Option ist sinnvoll um einen Kopiervorgang zu simulieren. Sie setzen dazu die Option einfach ans Ende des Befehls.

/TS

Zeigt den Zeitstempel der Quell-Dateien im Logfile an.

/FP

Zeigt den vollen Pfadnamen in der Logdatei.

/NS

Zeigt nicht Datei- und Verzeichnisgröße in der Logdatei an.

/NFL

Loggt keinen Kopiervorgang außer Fehler.

/NP

Zeigt den Fortschritt des Kopiervorgangs bei großen und kleinen Dateien nicht an (%-Angabe).

/ETA

Zeigt die Dauer der Kopiervorgänge an.

/LOG:file

Speichert das Log in der definierten Datei.

/LOG+:file

Hängt das Log an einer bereits bestehenden Logdatei an.

/TEE

Zeigt die Vorgänger auch in der Eingabeaufforderung an, nicht nur im Log.

/JOB:job

Liest die Parameter von einer Job-Datei aus.

/SAVE:job

Speichert die Parameter in einer Job-Datei.

/QUIT

Führt nichts aus. Zeigt in Verbindung mit dem Job-Schalter den Inhalt der Job-Datei an.

Robocopy im praktischen Einsatz

Wenn der Kopiervorgang einer Datei aus irgendwelchen Gründen fehlschlägt, zum Beispiel wenn die Datei ist in Benutzung ist oder Windows den Zugriff verweigert, führt Robocopy innerhalb eines definierten Zeitraums einige weitere Versuche durch, um den Kopiervorgang noch erfolgreich abzuschließen. Robocopy wartet standardmäßig 30 Sekunden und 1 Mio. Versuche, um den Kopiervorgang durchzuführen. Diese beiden Werte lassen sich mit den Optionen /W und /R steuern, sowie mit /REG als Standard in der Registry festlegen. Bei jedem Vorgang verwendet der Kopiervorgang die Optionen /W und /R.

Sind in der Befehlszeile /R und /W nicht gesetzt, verwendet das Tool die Standardwerte. Wenn Sie Datei- oder Verzeichnisnamen kopieren, die ein Leerzeichen enthalten, geben Sie den Pfad in Anführungszeichen an, zum Beispiel

Robocopy "\fs01\einkauf\lieferanten 2013" \fs01\archiv\einkauf

Alle Optionen verwendet das Tool von links nach rechts. Nach unserer Erfahrung verwenden die meisten Administratoren die Option /MIR, weil so schnell und einfach ein Spiegel eines Verzeichnisses angelegt wird.

Ein Beispielskript, auch auf Basis der Optionen in der Tabelle ist Folgendes:

echo on

del C:\Users\thomas\Desktop\backup.log

robocopy "C:\Users\thomas\Documents" "x:\backup\dokumente" /mir /r:5 /log+:C:\Users\thomas\Desktop\backup.log

robocopy "C:\Users\thomas\Pictures" "x:\backup\Pictures" /mir /r:5 /log+:C:\Users\thomas\Desktop\backup.log

robocopy "C:\Users\thomas\Documents" "z:\backup\dokumente" /mir /r:5 /log+:C:\Users\thomas\Desktop\backup.log

robocopy "C:\Users\thomas\Pictures" "z:\backup\Pictures" /mir /r:5 /log+:C:\Users\thomas\Desktop\backup.log

robocopy "C:\Users\thomas\Documents" "u:\backup\dokumente" /mir /r:5 /log+:C:\Users\thomas\Desktop\backup.log

robocopy "C:\Users\thomas\Pictures" "u:\backup\Pictures" /mir /r:5 /log+:C:\Users\thomas\Desktop\backup.log

shutdown /s /t 30

Daten spiegeln

Um die Daten in einer Freigabe auf einen anderen Rechner zu spiegeln, schreiben Sie am besten ein Skript mit dem Befehl

robocopy <Quell-Verzeichnis> <Sicherungs-Laufwerk>:\<Sicherungs-Verzeichnis> /mir

Mit dem Befehl

robocopy c:\users\thomas\documents y:\backup /mir

kopiert Windows die Verzeichnisse und Dateien aus einem Dokumenten-Verzeichnis auf das Laufwerk Y: in das Verzeichnis backup. Die Option /mir kopiert nur geänderte Dateien und löscht Dateien im Zielverzeichnis die im Quellverzeichnis nicht mehr vorhanden sind.

Das heißt, der erste Kopiervorgang dauert recht lange, da erst alle Dateien kopiert werden müssen. Der zweite geht aber deutlich schneller, da nur geänderte Dateien kopiert werden. Löschen Sie im Quell-Verzeichnis eine Datei, löscht der Kopiervorgang diese auch im Backup-Verzeichnis. So erhalten Sie immer eine 1:1-Kopie Ihrer wichtigsten Daten. Sie können ohne weiteres auch mehrere Verzeichnisse sichern. Verwenden Sie wie oben gezeigt in diesem Fall einfach öfters den Befehl nacheinander in einem Skript. (mje/cvi)