Bei Robocopy handelt es sich um ein wenig bekanntes Kommandozeilenprogramm zum Kopieren und Sichern von Daten. Es gehört seit Windows Vista zur Standardkonfiguration von MS Windows. IT-Experten schätzen das Programm wegen seiner Stabilität und Zuverlässigkeit. Robocopy kann mehrere, auch größere Verzeichnisse auf einmal kopieren, synchronisieren und sichern. Sollte dabei ein Fehler auftreten, bricht das Programm nicht einfach den kompletten Vorgang ab, sondern schreibt die Fehler in eine Log-Datei und fährt mit dem Kopieren der restlichen Ordner und Dateien fort.
Für Robocopy gibt es auch grafische Oberflächen (GUI), zum Beispiel das kostenlose RoboMirror. Admins bleiben in der Regel aber lieber auf der Kommandozeile, vor allem wenn sie die Aufrufoptionen des Tools auswendig kennen – oder komplexere Aufrufe einfach kopieren und anpassen.
Besser als COPY und XCOPY
Robocopy besitzt wesentlich mehr Funktionen als seine bekannten Alternativen COPY oder XCOPY. Es hat über 70 verschiedene Parameter und beherrscht beispielsweise die inkrementelle Sicherung, die nur die letzten Änderungen sichert statt stur alle Dateien. Diese Funktion verringert die Belastung von Bandbreite und anderen Ressourcen bei Cloud- und Netzwerk-Backups.
Wie das funktioniert zeigt ein Vergleich mit dem recht geläufigen Tool XCOPY. Auch damit kann man eine komplette Verzeichnisstruktur sichern:
xcopy <Quellverzeichnis> <Zielverzeichnis> /E /H
Damit würden alle Dateien und Verzeichnisse auf das Ziellaufwerk/Zielverzeichnis kopiert werden und es entsteht eine 1:1-Kopie der Daten: „/E“ sichert auch Unterverzeichnisse und „/H“ bindet versteckte Files und Systemdateien mit ein. Wird dieser Befehl ein weiteres mal ausgeführt, werden alle Dateien erneut kopiert, das Programm fragt aber jedes mal, ob es eine im Zielverzeichnis vorhandene Dateien überschreiben soll.
xcopy <Quellverzeichnis> <Zielverzeichnis> /E /H /Y
Der Parameter „/Y“ vermeidet die Nachfrage, jetzt überschreibt XCOPY vorhandene Files mit der Version aus dem Quellverzeichnis.
Da das Tool alle Dateien immer wieder kopiert, dauert es entsprechend lange, bis eine Sicherung erfolgt ist. Besser wäre da ein intelligentes Kopieren, das vorhandene Dateien einfach auslässt, falls die Version im Quellverzeichnis unverändert ist. Hier kommt der Befehl „robocopy“ ins Spiel.
robocopy <Quellverzeichnis> <Zielverzeichnis> /S
Beim ersten Aufruf erzeugt er – wie XCOPY – eine 1:1-Kopie des Quellverzeichnisses inklusive aller Dateien und – wegen „/S“ – auch Unterordner. Wird dieser Befehl ein weiteres Mal ausgeführt, so werden nur neue und geänderte Dateien übertragen, alle gleichen Dateien werden ausgelassen. Falls auch leere Verzeichnisse mitkopiert werden sollen, wird anstelle des Parameters „/S“ der Parameter „/E“ angegeben.
Robocopy bietet aber noch viel mehr Einstellungen. Ein wichtiger Einsatz von Robocopy sind Backups, für die ein einziger Parameter ausreicht: „/MIR“ (Mirror).
robocopy <C:/Dateien> <D:\Backup\Dateien> /MIR
Die Option „/MIR“ legt im Zielverzeichnis eine Spiegelung der Daten und der Struktur der Quellen an. Sie kombiniert die beiden Optionen „/E“ und „/PURGE“: „/E“ ist dafür vorgesehen, volle und leere Unterverzeichnisse zu kopieren, während „/PURGE“ alle Dateien im Zielverzeichnis löscht, die im Quellverzeichnis nicht mehr vorhanden sind. Dieser Befehl führt sowohl die erstmalige Sicherung als auch alle weiteren Aktualisierungen der Sicherung durch.
Gerade bei Backups praktisch: Mithilfe von „/B“ kann ein Administrator auch Dateien kopieren, die er laut Zugriffsrechte (NTFS-ACL) eigentlich gar nicht lesen darf. Dieser Sicherungsmodus (Backup Intent) steht allen Benutzern zur Verfügung, die über das entsprechen Sonderrecht für Backups verfügen, etwa den Mitgliedern der Gruppe „Backup Operators“.
Anzahl der Versuche begrenzen
Der Parameter „/R:1“ gibt an, wie oft Robocopy versuchen soll, einen fehlgeschlagenen Kopierversuch (etwa bei einer noch geöffneten Datei) zu wiederholen. Ohne diesen Parameter würde Robocopy in einer Endlosschleife hängen bleiben. Durch „/W:1“ gibt man die Zeitspanne in Sekunden zwischen den Kopierversuchen an.
Der Parameter „/COPYALL“ sorgt dafür, dass alle Dateien sowie deren Rechte und Attribute kopiert werden sollen.
Der Parameter „/EFSRAW“ kopiert die verschlüsselten Dateien im NTFS-Filesystem in verschlüsselter Form, ohne dass der Administrator den Schlüssel besitzen muss. Das Ziel bleibt identisch verschlüsselt wie die Quelle. Ein etwas komplexerer Robocopy-Aufruf kann dann so aussehen:
robocopy <\Quell\Quellverzeichnis> D:\\Zielverzeichnis /MIR /B /R:1 /W:1 /COPYALL
Neben diesen gebräuchlichen Optionen hält Robocopy auch einige Überraschungen bereit: So kann das Tool auch nur die vorhandenen Rechte (ACLs) kopieren, ohne den Inhalt der Dateien zu verändern. Das ist enorm praktisch, wenn die Kopie zwischendurch auf einem anderen Filesystem lag, das keine ACLs versteht, oder mit einem Tool kopiert wurde, das die Zugriffsrechte ignoriert. Gleiches ist mit den Zeitstempeln möglich (Erstellungs- und Änderungszeiten):
robocopy <\Quell\Quellverzeichnis> D:\\Zielverzeichnis /copy:ST
Hier steht „/copy:S“ für ACLs und „/copy:T“ für Zeitstempel. Default ist „/copy:DAT“ – damit werden Daten, Attribute und Zeitstempel kopiert, aber keine ACLs.
Praktischer Helfer
Robocopy ist ein beliebtes Tool für komplexe Kopier- und Sicherungsaufgaben. Egal, ob man eine Datenmigration durchführen will, Ordner synchron halten möchte oder einfach nur eine schnelle Möglichkeit zum genauen Kopieren von Dateien benötigt. Clevere Administratoren machen von dem Befehl regen Gebrauch, da sie mit relativ kurzen Befehlsketten komplexe Sicherungsaufgaben ausführen.