Daten kopieren mit Robocopy

Wer schon einmal versucht hat, mehrere tief verschachtelte Verzeichnisse auf einen anderen Datenträger zu kopieren, wird an die Grenzen des Explorers gestoßen sein. Mit “Datei XY kann nicht kopiert werden” beendet der Explorer gerne seinen Dienst. Und dann? Dann ist Handarbeit angesagt, denn der Kopierjob ist nicht mehr fortzusetzen.
Oder darf es eine automatische Sicherung sein? Ein Verzeichnis, das automatisch gespiegelt werden soll? Für all das sind unzählige – zum Teil kostenpflichtige – Tools vorhanden. All das ist jedoch auch mit Robocopy zu erledigen, einem Kommandozeilenwerkzeug, das sich parametergesteuert auch über den Taskplaner aufrufen lässt.
Microsoft liefert Robocopy.exe ab Vista als Bordmittel aus. Im kostenlosen Ressource Kit für den Windows Server 2003 ist robocopy.exe ebenfalls enthalten. Dies lässt sich einfach über die Microsoft-Homepage downloaden.
Die Installation ist denkbar einfach. Die müssten die Exe nur auf Ihren Rechner kopieren Empfehlenswert ist, die Exe in ein Windows-Verzeichnis (”C:WINNTsystem32”) zu kopieren, damit auf die Exe immer zugegriffen werden kann.
Nachdem robocopy.exe auf dem Rechner kopiert wurde, kann eine DOS-Box über “Start > Ausführen > cmd” gestartet werden. Der erste einfache Kopierjob kann mit

robocopy /MIR

gestartet werden. MIR (Mirror) spiegelt zwei Verzeichnisse. Doch Achtung: Mirror sorgt dafür, dass das Ziel-Verzeichnis identisch mit dem Quellverzeichnis ist. Dies bedeutet, dass robocopy in diesem Fall auch evtl. vorhandene Dateien im Ziel-Verzeichnis löscht!
Quell- und Zielpfad kann sowohl ein Pfad mit Laufwerksbuchstaben, als auch ein UNC-Pfad sein.

Falls Robocopy bei seiner Tätigkeit auf eine Datei stoßt, die Probleme beim Zugriff macht, bricht Robocopy den Kopierjob nicht ab, sondern versucht es erneut. Und erneut. Und erneut … Daher ist es wichtig, einem Kopierjob sinnvolle Parameter mitzugeben. Meistens sind die Schalter “/R:10″ und “/W:30″ ausreichend. In diesem Fall legt Robocopy nach einem Zugriffsproblem eine 30sekündige Pause ein (W = Wait) und probiert den Zugriff zehn mal (R=Retry).

Der Schalter “/Z” sorgt dafür, dass Robocopy unvollständig kopierte Dateien fortsetzt.
Somit ergibt sich für die meisten Kopieraufträge der Aufruf:

robocopy /MIR /R:10 /W:30 /Z

Ein weiterer Vorteil von Robocopy kann sein, dass man mit diesem Tool auch Zugriffsrechte von NTFS-Laufwerken mitkopieren kann. Der Parameter “/COPY” bestimmt die mitzukopierenden Dateiattribute. Per Standard ist “/COPY:DAT” vordefiniert, wobei “D” für die Datei, “A” für seine Attribute und “T” für den Zeitstempel steht. Mit der Option “O” wird auch der Besitzer der Datei, mit “S” die Zugriffsrechte und mit “A” die zu überwachenden Dateizugriffe mitkopiert. Wer wirklich die Datei samt Attribute kopieren will, kopiert mit dem Parameter “/COPY:DATSAO”. Und was man sich merken kann: “/COPYALL”. Dieser Schalter vereint synonym zu “/COPY:DATSAO” alle Optionen.

Um Dateien beim Kopiervorgang zu filtern bieten sich die Schalter “/MAX” und “/MIN” an, mit denen sich Dateien mit bestimmter Dateigröße (in Byte) filtern lassen. Die Option “/MAXAGE” und “/MINAGE” filtern aufgrund des Dateialters. “/MAXLAD” und “/MINLAD” filtert übern den Zeitpunkt des letzten Zugriffes.

Robocopy eignet sich hervorragend, um eine Sicherung über den Taskplaner zu starten. Doch verfügt Robocopy auch über einen “Monitor-Modus”, bei dem Robocopy dauerhaft läuft und Verzeichnisse selbstständig überwacht. Mit dem Schalter “/MOT: ” erwacht Robocopy nach der vorgegebenen Zahl Minuten zum Leben und beginnt mit seiner Arbeit. Mit dem Schalter “/MON: ” erwacht Robocopy, sobald die in angegebene Anzahl von änderungen im zu überwachenden Verzeichnis erfolgt ist. Wenn Sie Robocopy im Monitormodus betreiben kann es sinnvoll sein Robocopy mitzuteilen, dass es seine Kopiertätigkeit nur in einem bestimmten Zeitfenster ausführen darf. Dann ist der Schalter “/RH ” wichtig, der Uhrzeiten von “0000″ bis “2359″ entgegennimmt. Alternativ kann ein Netzwerk auch mit dem Schalter “/IPG:” gewählt werden. Dieser Schalter zwingt Robocopy nach jedem 64-Kbyte-Block zu einer Zwangspause in Millisekunden, um Bandbreite im Netzwerk zu sparen.

In der Robocopy-Dokumentation finden Sie noch weitere Schalter, mit denen Sie Robocopy steuern können. Die hier aufgeführten sind die Parameter, die in der Praxis von Nöten sind.

Robocopy: Bestimmte Dateitypen kopieren
UPDATE: Wer mittels robocopy nur bestimmte Dateitypen (hier: PDF) kopieren möchte, kann dies mit folgenden Parametern lösen:

Robocopy.exe*.pdf

Mehrere Dateitypen lassen sich wahrscheinlich nur über eine Batch realisieren. So kopiert die folgende Batch-For-Schleife nur die Dateitypen, die in der runden Klammer angegeben sind:

FOR %%i in (pdf txt) do robocopy.exe*.%%i

UPDATE: Daten mit robocopy kopiert, aber nicht angezeigt (Attribute: hidden / versteckt)

Wenn man versucht (und man stolpert immer wieder darüber!) Daten per Robocopy aus dem Root („/“) zu kopieren, kopiert Robocopy zar fleißig die Daten, doch in Windows sind die Daten nicht sichtbar. Bei diesem Verhalten handelt es sich m.E. um einen Bug, der schons eit Jahren in Robocopy vorhanden ist (auch wenn andere Personen der Meinung sind, dass dieses Verhalten ok sei).

Nachträglich kann dies mit folgendem Befehl bereinigt werden:
attrib [pfad wie d:backups etc]* -s -h /s

Beim Kopieren mit Robocopy kann man dies auch umgehen. Man fügt dem Robocopy-Aufruf ein /A-:H hinzu. Dieser Befehl entfernt ALLE Attribute der zu kopierenden Dateien. Nachteil: Wenn versteckte Dateien im Copyjob vorhanden sind, wird dieses Attribut beim Klon leider auch entfernt.

UPDATE: Robocopy sichert unveränderte Daten

Wer per Robocopy Sicherungen auf ein NAS macht, kennt vielleicht das Problem: Robocopy aktualisiert auch Dateien, die nicht verändert wurden. Der Grund liegt an Differenzen im Zeitstempel beider Systeme. Robocopy geht hier fälschlicherweise davon aus, dass sich die Dateien unterscheiden (Abweichungen können durchaus eine Sekunde betragen). Problem-Lösung: Parameter „/FFT“ – durch diesen Parameter vergleich Robocopy die Zeitstempel „nicht mehr so genau“, Toleranzen von einer Sekunde ignoriert Robocopy nun.

Schreibe einen Kommentar