Windows Backup Teil 2/4: robocopy erweiterte Parameter

Im ersten Teil gab es eine kleine Einführung in das Kopieren von Dateien mit Windowsbefehlen. Hauptsächlich ging es hierbei um robocopy, welches ein sehr mächtiges Kopier-/Synchronisier-Tool ist. Hier noch ein paar weitere Parameter von robocopy, welche durchaus nützlich sein könnten.

Bisher kopiere ich Verzeichnisse mit /E, oder synchronisiere diese mit /E /PURGE oder /MIR.

Möchte man nun Dateien eines bestimmten Types kopieren, so kann man dies auch angeben.
In diesem Beispiel werden nur „doc“-Dateien synchronisiert.

Möchte man Dateien hingegen „doc“-Dateien auslassen, so kann dies mit dem Parameter /XF (eXclude File) angeben

Oder man kann ganze Verzeichnisse mit /XD (eXclude Directory) auslassen

Möchte man mehrere Dateien oder Verzeichnisse auslassen, so werden diese einfach hintereinander, durch ein Leerzeichen getrennt, angegeben.
Ebenfalls ist die Angabe von Wildcards möglich.
Am Beispiel sollen zwei Verzeichnisse und ein paar Systemfiles ausgelassen werden.

Problem Samba-Share

Ich hatte das Problem, dass beim Kopieren von Dateien auf eine Samba-Freigabe meines Linux-Servers, die Dateien immer wieder kopiert wurden.
Verantwortlich hierfür ist das Handling der Zeitangaben der Dateien (FAT-Uhrzeitangaben). Mit dem Parameter „/FFT“ wird hier eine Differenz von 2 Sekunden akzeptiert und damit funktioniert das Kopieren der Dateien wieder ohne Probleme.

Gesperrte Dateien

Dateien, welche zum Zeitpunkt des Kopieren/Synchronisieren geöffnet sind oder für die man keine Zugriffsrechte hat, können nicht kopiert werden. Robocopy wartet hier im Standard 30 Sekunden und wiederholt den Versuch 1000000 mal.
Zum Kopieren kann hier der Wert für die Wartezeit (/W) und die Wiederholungen (/R) auf andere Werte gesetzt werden. Auch der Wert 0 kann gesetzt werden, so wird bei einem Fehler sofort mit der nächsten Datei fortgefahren.
Im Beispiel habe ich mir für die „Datei 2.TXT“ die Rechte entzogen und versuche diese zu kopieren.

winback2-01

winback2-02
Wie man sieht, wird jetzt der Fehler übersprungen und der Befehl ohne Unterbrechung weiter ausgeführt. Die „Datei 2.TXT“ wird nicht kopiert, da mir dazu ja die Rechte fehlen.

Kopieren von Dateien ohne Berechtigung

Wenn ich eine Datei nicht kopieren kann, weil mir die Rechte dazu fehlen, kann man dies dennoch mit dem Parameter „/B“ (Backupmodus) erzwingen. In diesem Fall greifen die Berechtigungen des Filesystems. Ich muss also im Filesystem des Quell- und Ziel-Laufwerks administrative Schreibrechte besitzen.
Dazu starte ich den Robocopybefehl als Administrator und führe den folgenden Befehl aus.

winback2-03b

Jedoch kann ich diese kopierte Datei im Ziel öffnen, da ich die Sicherheitsangaben der Datei nicht mit kopiert habe und damit alle hinterlegten Zugriffsrechte auf die Standardrechte des Filesystems gesetzt werden.
winback2-05

Zugriffsrechte (ACL´s) mit kopieren

Man kann auch die ACL´s der Dateien mit sichern, was allerdings ein Ziel-Laufwerk mit NFTS (Windows) oder eine SAMBA-Freigabe mit ACL (Linux) voraussetzt.
Hierzu muss der Befehl um die Angabe von „/SEC“ erweitert werden. Dieser Parameter benötigt zusätzlich noch die Angabe, welche Sicherheitsparameter mit kopiert werden sollen. Ein „/COPYALL“ kopiert alle Angabe, mit „/COPY:xxx“ können diese einzeln angegeben werden:
D=Daten
A=Attribute
T=Zeitstempel
S=Sicherheit (NTFS-ACL´s)
O=Besitzerinformationen
U=Überwachungsinformationen
Die Standardangabe ist hier /“COPY:DAT“

Beispiel mit copyall

winback2-06b

Der Parameter „/SECFIX“ kopiert keine Dateien, sondern korrigiert die Sicherheitsangaben der Dateien im Zielverzeichnis.
Im obigen Beispiel mit dem Parameter „/B“, wo ich ohne die „/SEC“-Angabe kopiert habe, könnte ich so die Dateirechte im Ziel-Laufwerk korrigieren.
Auch hier ist die Angabe der „Copy“-Flags notwendig.

winback2-08

Paralleles Kopieren

Robocopy kopiert seriell; das bedeutet, dass die Dateien nacheinander kopiert werden. Man kann aber auch Kopiervorgänge parallel starten. Dazu benutzt man den Parameter „/MT“ (Multithread). Im Standard wird hier „/MT:8“ verwendet, also 8 parallele Kopiervorgänge. Hier können Zahlen von 1-128 angegeben werden, aber man sollte bedenken, dass parallele Zugriffe auf Datenträger oder parallele Datenstreams über das Netzwerk die Leistung beeinträchtigen können.
Hier gilt: Ausprobieren, welche Werte zum verwendeten System passen.

Augabe loggen

Möchte man die Ausgabe von robocopy dokumentieren, z.B.: weil ein Backup unbeobachtet über Nacht läuft, gibt es den Parameter „/LOG:“.
Während „/LOG:“ die Logdatei überschreibt, wird mit „/LOG+:“ die Logdatei jedes Mal um die Ausgabe erweitert.
Möchte man die Ausgabe protokollieren UND auch im Konsolenfenster die Ausgabe sehen, so kann noch der Parameter /“TEE“ angehängt werden.
Leider lässt sich diese Ausgabe nicht weiter durch eine Angabe eines Trennzeichens parametrisieren. Es werden einfach Leerzeichen zwischen die Angaben gestellt.
Beeinflussen kann man die Ausgabe nur noch, indem man Ausgabewerte unterdrückt.
Ein kleiner Auszug aus „robocopy /?“ :
/NJH Unterdrückt die Kopfdaten (Angabe der Parameter).
/NJS Unterdrück die Zusammenfassung am Ende
/FP Schließt den vollständigen Pfadnamen von Dateien in die Ausgabe ein
/NS Unterdrückt die Dateigröße
/NC Gibt keine Dateiklasse aus (NEUER, GEÄNDERT, EXTRA DATEI usw)
/NFL Verhindert die Ausgabe der Dateien
/NDL Unterdrück die Verzeichnisangaben
/NP unterdrückt die Prozentangabe des Kopierfortschrittes.

Bisher sind das immer noch nicht alle möglichen Funktionen.
Für das zeitgesteuerte Kopieren/Synchronisieren gibt es auch noch Parameter, aber davon gibt’s mehr im Teil 3