Datensicherung/ Werkzeuge/ Kopieren/ ROBOCOPY

Aus Wikibooks
Wechseln zu: Navigation, Suche


Robocopy – Das robuste Kopierprogramm[Bearbeiten]

ROBOCOPY ist ein robustes Kopierprogramm. Es ist abwärtskompatibel zu XCOPY, bietet aber wesentlich mehr Möglichkeiten.

Download

ROBOCOPY wurde erstmals als Teil des MS Windows NT Resource Kit Tools im Jahr 1997 ausgeliefert und ist in der Version 5.1.10.1027 zu Windows Vista und Server 2009 enthalten. Der Download ist unter http://technet.microsoft.com/en-us/magazine/2006.11.utilityspotlight.aspx (hier: UtilitySpotlight2006_11.exe) möglich. Diese Version kommt mit den neuen Schaltern /DST und /FFT, mit dem sich Zeitdifferenzen durch die Sommer-/Winterzeit und durch Übertragungen aus FAT-Dateisystemen lösen lassen, sowie /XJD und /XJF für Abzweigungspunkte auf Verzeichnisse. Eine Beschreibung gibt es bei Microsoft[1].

Nach einer einmaligen Installation dieses Programms findet man diese Version der robocopy.exe im Verzeichnis C:\WINDOWS\SYSTEM32. Von dort kann sie global auf dem aktuellen PC eingesetzt oder, ohne weitere Installation, auch auf andere Rechner kopiert und dort genutzt werden. Bei Windows Vista und Windows 7 gehört das Programm ROBOCOPY zur Standardausstattung.

Wenn Sie die Parameter von ROBOCOPY kennen lernen wollen, öffnen Sie die Eingabeaufforderung und geben Sie robocopy /? ein. Sie erhalten wie bei jedem Kommandozeilenbefehl eine Beschreibung der Parameter und Möglichkeiten des Programms. Es sind sehr viele, deshalb folgen einige einführende Beispiele.

Einführende Beispiele[Bearbeiten]

Zunächst eine Übersicht, wie die für XCOPY aufgeführten Beispiele sich mit ROBOCOPY realisieren lassen.

1 robocopy c:\  d:\kopie\  *.doc  /s kopiert alle Word-Dateien (*.doc) von Laufwerk c: einschließlich Unterverzeichnisse nach d:\kopie
2 robocopy  \\10.53.212.250\TEXTE\  d:\kopie\ *.doc  /s kopiert Word-Dateien vom PC mit der IP-Adresse 10.53.212.250 aus dem Verzeichnis mit dem Freigabenamen TEXTE
3 robocopy  c:\  d:\kopie\  /s versucht alle Dateien der Systempartition zu kopieren. Macht bei Problemen mit ständig benutzten Betriebssystemdateien eine Million Versuche.
4 robocopy  c:\  d:\kopie\  /s /r:1 wie davor, macht bei Fehlern nach 30 Sekunden einen zweiten Versuch (/r:1) und setzt danach das Kopieren fort
5 robocopy  c:\  d:\kopie\  /s /r:1 /w:1 wie davor, aber im Fehlerfall erfolgt die Wiederholung nach 1 statt nach 30 Sekunden (/w:1)
6 robocopy  c:\  d:\kopie\  /s /r:1 /w:1 /maxlad:20081015 wie davor, kopiert nur Dateien, die seit dem 15.10.2008 benutzt worden sind
7 robocopy  c:\  d:\kopie\  /s /r:1 /w:1 /maxage:20081015 wie davor, kopiert nur Dateien, die seit dem 15.10.2008 verändert oder erstellt worden sind
8 robocopy  c:\  d:\kopie\  /s /r:1 /w:1 /maxage:10 wie davor, kopiert nur Dateien, die in den letzten 10 Tagen erstellt oder verändert wurden
9 robocopy  c:\  d:\diff\  /s /r:1 /w:1 /m Der Befehl kopiert nur Dateien mit Archivbit, setzt nach dem Kopieren das Archivbit zurück (inkrementelle Sicherung)
10 robocopy  c:\  d:\diff\  /s /r:1 /w:1 /a kopiert nur Dateien mit Archivbit, aber ändert das Archivbit nicht (differentielle Sicherung)

Erläuterungen zum Archivbit[Bearbeiten]

Sie wissen bestimmt, dass eine Datei mit dem Kennzeichen „read only“ (Nur Lesen) markiert werden kann. Ein weiteres Dateikennzeichen ist weniger bekannt: das Archivbit. Die Aufgabe des Archivbits ist es, Dateien zu markieren, die seit der letzten Sicherung verändert worden sind. Wenn Sie eine Datei ändern oder verschieben, wird das Bit gesetzt. Jede neue Datei erhält ebenfalls das Kennzeichen. Das Archivbit ist ursprünglich bei allen Dateien gesetzt. Wenn Sie noch nie eine Datensicherung gemacht haben, bei der das Archivbit zurückgesetzt wurde, kopiert der vorletzte Beispielbefehl (mit dem Parameter /m) das gesamte Systemlaufwerk. Es entsteht also eine Vollsicherung. Für nachfolgende Datensicherungen gibt es zwei sinnvolle Möglichkeiten:

  • Wenn Sie für weitere Sicherungen den letzten Befehl (mit /a, Beispiel 10) verwenden, wird die Sicherung differenziell: Es werden alle seit der Vollsicherung geänderten Dateien erfasst. Sie brauchen sehr wenig Speicherplatz für die Sicherung. Allerdings wird im Laufe der Zeit die zu sichernde Datenmenge allmählich größer.
  • Wenn Sie den vorletzten Befehl (mit /m, Beispiel 9) wiederholen, werden nur die diejenigen Dateien gesichert, die seit der vorhergehenden Sicherung geändert worden sind.

Vergleich mit dem Zielverzeichnis[Bearbeiten]

Im Unterschied zu COPY und XCOPY vergleicht ROBOCOPY jede zu kopierende Datei mit dem Zielverzeichnis. Falls es im Ziel eine identische Datei gibt, wird sie übersprungen. Die Zeitersparnis ist beträchtlich.

Die Probierfunktion[Bearbeiten]

Wenn Sie einen beliebigen Befehl um /L ergänzen, wird die Befehlsausführung simuliert. Sie können verfolgen, was ROBOCOPY tun würde, wenn das /l nicht wäre. Nichts wird kopiert oder verändert. Ein Beispiel:

robocopy "C:\Dokumente und Einstellungen\" A:\ /s /r:1 /w:1 /maxage:3 /l

listet alle Dateien im Verzeichnis "C:\Dokumente und Einstellungen\" auf, die in den letzten drei Tagen erstellt oder verändert worden sind. Das kann hilfreich sein, wenn Sie eine Datei vermissen und sich nicht an den Speicherort erinnern. Übrigens funktioniert der Befehl selbst dann, wenn das als Ziel angegebene Diskettenlaufwerk A: nicht vorhanden oder keine Diskette eingelegt ist.

Die Spiegelung[Bearbeiten]

Der Parameter /s (Unterverzeichnisse = Subdirectories mitkopieren) funktioniert genau wie bei XCOPY. Weitaus interessanter ist aber die Möglichkeit der Spiegelung. Wenn Sie in einem ROBOCOPY-Befehl den Parameter /s durch /mir ersetzen, erzeugt das Programm eine sogenannte Spiegelung, englisch mirror. Das bedeutet:

  • Neue und geänderte Dateien werden kopiert, genau wie bei /s
  • Im Unterschied zu /s werden auch leere Unterverzeichnisse kopiert
  • Zusätzlich zu /s werden die Dateien, die im Original gelöscht worden sind, auch aus der Kopie entfernt.

Dadurch ist die Kopie völlig identisch mit dem Original, ähnlich wie bei einem Spiegel.

Ein Problem ist hier beschrieben: http://technet.microsoft.com/de-de/library/community-edits.rss?topic=cc733145%7Cde-de%7C10

Die Protokollierung[Bearbeiten]

In der Standardeinstellung erzeugt ROBOCOPY ein ausführliches Protokoll und gibt es auf den Bildschirm aus. Wenn man den Parameter /LOG:file verwendet, wird das Protokoll in eine Datei geschrieben. Ersetzen Sie "file" durch den gewünschten Dateinamen. Achten Sie darauf, dass sich die Protokolldatei außerhalb des zu kopierenden Bereichs befindet. Wenn Sie den Parameter /LOG+:file benutzen, wird das Protokoll an eine vorhandene Datei angehängt. Diese muss aber existieren, sonst gibt es eine Fehlermeldung.

Vor allem in der Testphase ist es nützlich, das Protokoll sowohl als Datei zu erstellen und gleichzeitig auf dem Bildschirm zu sehen. Das können Sie mit dem zusätzlichen Parameter /TEE erreichen. Beispiel:

robocopy C:\ Z:\LWC\ /mir /r:1 /w:1 /tee /log:Z:\PROT.TXT
robocopy D:\ Z:\LWD\ /mir /r:1 /w:1 /tee /log+:Z:\PROT.TXT

Die erste Befehl kopiert C: nach Z:\LWC bzw. aktualisiert eine dort vorhandene Kopie. Dabei wird die Protokolldatei Z:\PROT.TXT neu erstellt. Der zweite Befehl setzt das Protokoll fort. Durch den Parameter /tee erfolgt die Protokollierung gleichzeitig in die Datei und auf den Bildschirm. Sie können den Kopiervorgang in Echtzeit verfolgen und wenn Sie etwas nicht schnell genug lesen konnten, ist eine nachträgliche Kontrolle mittels der Log-Datei möglich.

Lesen Sie hier mehr zur Protokollierung.

Die Auswahl der zu kopierenden Dateien[Bearbeiten]

Es gibt zahlreiche, untereinander kombinierbare Möglichkeiten, die zu kopierenden Dateien auszuwählen. In Frage kommen

  • Positiv-Listen und Ausnahmelisten
  • Auswahl nach Dateidatum, Dateigröße und Dateiattributen
Lesen Sie hier mehr zur Dateiauswahl.

Kopieren über langsame Leitungen (Internet)[Bearbeiten]

Nach einem Abbruch der Übertragung kann die Übertragung an der Unterbrechungsstelle wiederaufgenommen werden. Die Übertragung kann zu bestimmten Uhrzeiten angehalten werden, beispielsweise während der Geschäftszeiten, um den normalen Internetzugang nicht zu beeinträchtigen.

PC wird während des Backups sehr langsam[Bearbeiten]

Während das Backup läuft, wird der PC merklich langsamer. Wenn es Ihnen nicht gelingt, das Backup auf Ihre Pause zu legen, gibt es eine andere Möglichkeit. Die Übertragungsrate lässt sich drosseln. Zwar dauert dann das Backup wesentlich länger, aber möglicherweise stört das nicht.

Monitoring[Bearbeiten]

Mit den entsprechenden Parametern können Sie ROBOCOPY beauftragen, ständig aktiv zu bleiben und im Hintergrund die Veränderungen an den Dateien zu überwachen. Mit /MOT:60 können Sie in regelmäßigen Abständen, beispielsweise alle 60 Minuten, die Kopie mit dem Original in Übereinstimmung bringen lassen. Im Falle eines Unglücks verlieren Sie maximal die Daten der letzten Stunde. Alternativ können Sie mit /MON:3 den Abgleich starten, sobald beliebige 3 Dateien verändert worden sind. Es ist sogar möglich, beide Parameter zu kombinieren.

Lesen Sie hier mehr zum Monitoring.

Bekannte Probleme[Bearbeiten]

Bei Windows 7 Professional deutsch liegt ROBOCOPY.EXE in der Produktversion XP027 bei, die folgenden lästigen „Unicode-Fehler“ aufweist:

  • Verwendet man zur Protokollierung statt der Option /LOG: die Option /UNILOG: (die angeblich eine Logdatei im Unicode-Zeichensatz erstellt), so kann man nach dem Robocopy-Lauf die erzeugte Logdatei nicht sinnvoll anschauen. Im Notepad beispielsweise werden unleserliche „lustige“ Zeichenfolgen angezeigt.
  • Was offensichtlich dabei passiert: es wird eine Logdatei erzeugt, die zwar mit einer UTF-16-Kennzeichnung Byte Order Mark oder BOM beginnt (nämlich den beiden Anfangsbytes 0xFF und 0xFE), auf die aber dann offensichtlich im Zeichensatz Codepage 850 kodierter Text folgt. Die Codepage 850 ist auch als DOS-Codepage oder DOS-Latin-1 bekannt. (Ausnahme davon ist allerdings die Logdatei-Zeile mit den ROBOCOPY-Parametern, die anscheinend tatsächlich UTF-16-kodiert ist.)
  • Eine mögliche Problembehebung sei hier skizziert:
    • die Logdatei sicherheitshalber kopieren
    • mit einem Editor, der als Hex-Editor fungieren kann, die ersten beiden Bytes entweder löschen oder mit zwei harmlosen Zeichen (z.B. Leerzeichen) überschreiben (Zweiteres kann beispielsweise mit einem Emacs 22.3 mittels hexl-find-file und entsprechendem Bearbeiten der Start-Bytes getan werden)
    • die so modifizierte Datei wieder speichern
    • Nun kann die so „entschärfte“ Datei entweder in einer CMD.EXE mit type logdatei | more angeschaut werden — oder mit einem Editor, der die Datei im Zeichensatz Codepage 850 anzeigen kann (z.B. Notepad++ über den Menüpunkt Kodierung->Zeichensatz->Westeuropäisch->OEM 850).


Quellen
  1. Programmbeschreibung ROBOCOPY auf MS TechNet http://technet.microsoft.com/de-de/library/cc733145%28WS.10%29.aspx Microsoft TechNet