Datensicherung/ Werkzeuge/ Kopieren/ ROBOCOPY

Aus Wikibooks


Robocopy – Das robuste Kopierprogramm[Bearbeiten]

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

Download

Bei Windows 7 bis 11, Windows Vista und Server 2008 und höher gehört das Programm ROBOCOPY zum Lieferumfang von Windows und ist bereits installiert. Bei älteren Windows-Versionen muss Robocopy zunächst installiert werden.

Wenn Sie prüfen wollen, ob ROBOCOPY installiert ist oder die Parameter von ROBOCOPY kennenlernen 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 im nächsten Abschnitt einige einführende Beispiele.

ROBOCOPY wurde erstmals als Teil des MS Windows NT Resource Kit Tools im Jahr 1997 ausgeliefert. 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.

Einführende Beispiele[Bearbeiten]

Zunächst eine Übersicht, wie die als Beispiel für XCOPY benutzten 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:20151015 wie davor, kopiert nur Dateien, die seit dem 15.10.2015 benutzt worden sind
7 robocopy  c:\  d:\kopie\  /s /r:1 /w:1 /maxage:20151015 wie davor, kopiert nur Dateien, die seit dem 15.10.2015 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)
11 robocopy  c:\  d:\kopie\ /mir /r:1 /w:1 kopiert im Spiegelungsmodus, löscht also auch Dateien die im Quellverzeichnis nicht mehr vorhanden sind und kopiert auch leere Quellverzeichnisse

Versteckspiel[Bearbeiten]

Leider versteckt Robocopy das Zielverzeichnis nach dem Kopieren. Sie können im Windows Explorer die Einstellungen ändern, damit er auch versteckte Dateien anzeigt. Einfacher ist es, den Zielordner sichtbar zu machen. Führen Sie an der Eingabeaufforderung den folgenden Befehl aus: attrib -h -s d:\kopie\

Anwendungsbeispiel: Datensicherung vor Neuinstallation[Bearbeiten]

Sie planen eine Neuinstallation und wollen vorher alle Daten auf eine externe Festplatte sichern. Einerseits wollen Sie keine wichtige Datei auslassen, andererseits keinen Speicherplatz auf der Backup-Festplatte vergeuden. Ein Beispiel finden Sie hier.

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 (dies lässt sich auch mit /e einstellen)
  • Zusätzlich zu /s werden die Dateien, die im Original gelöscht worden sind, auch aus der Kopie entfernt (dies lässt sich auch mit /purge einstellen)

Dadurch ist die Kopie völlig identisch mit dem Original, ähnlich wie bei einem Spiegel (/mir ist also identisch mit /e und /purge, allerdings werden bei /mir die Sicherheitseinstellungen des Zielverzeichnisses überschrieben (im Gegensatz zur Kombination /e /purge, wo sie dann nicht überschrieben werden)).

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.

Verschachtelungstiefe[Bearbeiten]

Schäden am Dateisystem führen mitunter zu zyklisch verschachtelten Verzeichnissen unendlicher Tiefe. Ein Beispiel:

         Neues Verz.       4    c:\Documents and Settings\All Users\Anwendungsda
ten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsda
ten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsda
ten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsda
ten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsda
ten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsda
ten\Application Data\Anwendungsdaten\Application Data\F-Secure\GUTS2\ASPAM\20161
02401\

Das Problem dabei: Obwohl auf der Quell-Festplatte nur wenige GB belegt sind, wird ein beliebig großer freier Speicherplatz auf der Zielfestplatte im Laufe vieler Stunden aufgebraucht. Schließlich bricht der Robocopy-Befehl wegen Speicherplatzmangel ab. Auf der Zielfestplatte sind dadurch möglicherweise Verzeichnungsstrukturen entstanden, die sich mit dem Explorer nicht löschen lassen. Solche Ordnerstrukturen lassen sich am besten mit Robocopy wieder entfernen, indem man ein leeres Verzeichnis auf den defekten Ordner mit der Option /mir kopiert.

  • Lösung 1: Wiederholen Sie das Kopieren, aber schließen Sie den fehlerhaften Ordner vom Kopieren aus.
  • Lösung 2: Wiederholen Sie das Kopieren, aber mit der Ergänzung /LEV:10 im Befehl. Dadurch werden nur die ersten 10 Ebenen der Verzeichnisstruktur kopiert, was normalerweise ausreichen sollte. Empfehlung: Verwenden Sie den Befehl /LEV:15 vorsorglich, das kann Ihnen einige Stunden Wartezeit ersparen.
  • Lösung 3: Verwenden der Option /sl. Damit werden symbolische Links vom Quellverzeichnisbaum in das Ziel kopiert anstatt den Inhalt zu kopieren auf den der symbolische Link zeigt.

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