Ein Blog rund um Microsoft Windows und allem, was sonst noch so anfällt...

Robocopy - Mein Lieblingstool für Kopieren und Backup

von Georg Binder 15. January 2008 01:51

Ich möchte eine Mini-Serie starten zum Thema "geniale Tools".

Platz 1 für mich: Robocopy.

Wer Verzeichnisse spiegeln, Dateien synchronisieren oder differentielle Backups bewußt auf Dateiebene (und nicht mit ntbackup oder Third-Party Backup-Tools) machen möchte, oder wer gelegentliche größere Datenmengen bewegen muss, der kennt das Tool robocopy vielleicht, wenngleich es jahrelang irgendwie doch als Geheimtipp galt.
Die Fachzeitschrift c't hat 2003 ein Batch Skript auf Basis von xcopy veröffentlicht, welches aber weniger kann und nicht so robust ist wie robocopy.
Gut man kann jetzt natürlich behaupten, xcopy wäre auf jedem Windows System vorhanden, während man für robocopy die Windows Server 2003 Resource Kit Tools herunterladen muss.
Falsch! - In Windows Vista ist Robcopy erstmals standardmäßig inkludiert!

Hier eines meiner Backup Skripten:
robobackup.cmd
Es sichert jeden Tag bestimmte Verzeichnisse auf eine externe Festplatte, differentiell, d.h. nur geänderte Dateien - Von dieser externen Festplatte habe ich zwei Stück, eine zu Hause und eine im Büro und einmal wöchentlich rotiere ich die Platten zwischen zu Hause und Büro, um ein örtlich getrenntes Backup zu haben. Zusätzlich verwende ich beim erstellen noch Schattenkopien, um keine Probleme mit offenen Dateien zu bekommen, aber darauf werde ich in einem eigenen Artikel näher eingehen...

Übrigens, das "cd /d %0\\.." ist ein Trick um in das aktuelle Verzeichnis zu wechseln, in dem das Skript liegt, wenn man nämlich unter Vista ein Skript als Administrator ausführt, wechselt Windows in das Verzeichnis "C:\\Windows\\system32".

Wer sich mit der Kommandozeile weniger zurecht findet, kann das Robocopy GUI herunterladen mit dem man sich das Skript "zusammenklicken" kann.

In Daniel Melanchton's Blog wird das Thema robocopy und Robocopy Gui noch ausführlicher behandelt.

image

"Robocopy GUI erweitert außerdem die Funktionalität des klassischen Robocopy. Durch die Multithreading-Fähigkeit kann man ein Robocopy-Skript erstellen, auszuführen und bereits mit der Entwicklung eines anderen Skripts beginnen, während das erste Skript immer noch läuft. Man kann die Skripte auch speichern, um eine Bibliothek aus allgemeinen Skripts herzustellen und mit Kollegen auszutauschen. Die wichtigste Funktion besteht dabei darin, dass man mit der Robocopy GUI die eigenen Standardeinstellungen abspeichern kann und nicht jedes Mal von vorn beginnen muss."

Hier die Liste der Parameter:

-------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren für Windows
-------------------------------------------------------------------

Syntax :: ROBOCOPY Quelle Ziel [Datei [Datei]...] [Optionen]
Quelle :: Quellverzeichnis (Laufwerk:\\Pfad oder \\\\Server\\Freigabe\\Pfad).
Ziel :: Zielverzeichnis (Laufwerk:\\Pfad oder \\\\Server\\Freigabe\\Pfad).
Datei :: Zu kopierende Dateien (Namen/Platzhalter: Standard ist "*.*").
::
:: Kopieroptionen:
::
/S :: Kopiert Unterverzeichnisse, jedoch keine leeren Unterverzeichnisse.
/E :: Kopiert Unterverzeichnisse, einschließlich leerer Unterverzeichnisse.
/LEV:n :: Kopiert nur die obersten Ebenen der Quellverzeichnisstruktur.
/Z :: Kopiert Dateien im Neustartmodus.
/B :: Kopiert Dateien im Sicherungsmodus.
/ZB :: Verwendet den Neustartmodus. Im Fall einer Zugriffsverweigerung wird der Sicherungsmodus verwendet.
/EFSRAW :: Kopiert alle verschlüsselten Dateien im EFS RAW-Modus.
/COPY:copyflags :: Gibt an, welche Inhalte für Dateien kopiert werden sollen (der Standard ist "/COPY:DAT").
(Kopierflags : D=Daten, A=Attribute, T=Zeitstempel).
(S=Sicherheit=NTFS-ACLs, O=Besitzerinformationen, U=Überwachungsinformationen).
/DCOPY:T :: Kopiert Verzeichniszeitstempel.
/SEC :: Kopiert Dateien mit Sicherheitsinformationen (entspricht "/COPY:DATS").
/COPYALL :: Kopiert alle Dateiinformationen (entspricht "/COPY:DATSOU").
/NOCOPY :: Kopiert keine Dateiinformationen (eignet sich für die Verwendung mit "/PURGE").
/SECFIX :: Korrigiert die Dateisicherheit in allen Dateien, auch in ausgelassenen Dateien.
/TIMFIX :: Korrigiert die Uhrzeitangaben für Dateien in allen Dateien, auch in ausgelassenen Dateien.
/PURGE :: Löscht Zieldateien/-verzeichnisse, die in der Quelle nicht mehr vorhanden sind.
/MIR :: Spiegelt eine Verzeichnisstruktur (Entspricht "/E" mit "/PURGE").
/MOV :: Verschiebt Dateien (löscht Dateien nach dem Kopieren an der Quelle).
/MOVE :: Verschiebt Dateien UND Verzeichnisse (löscht sie nach dem Kopieren an der Quelle).
/A+:[RASHCNET] :: Fügt die vorhandenen Attribute den kopierten Dateien hinzu.
/A-:[RASHCNET] :: Entfernt die vorhandenen Attribute von den kopierten Dateien.
/CREATE :: Erstellt eine Verzeichnisstruktur und nur Dateien mit einer Länge von Null.
/FAT :: Erstellt Zieldateien nur unter Verwendung von 8.3 FAT-Dateinamen.
/256 :: Deaktiviert die Unterstützung für sehr lange Pfade (> 256 Zeichen).
/MON:n :: Überwacht die Quelle. Wird erneut ausgeführt, wenn mehr als n Änderungen gefunden werden.
/MOT:m :: Überwacht die Quelle. Wird bei einer Änderung erneut ausgeführt in m Minuten.
/RH:hhmm-hhmm :: Ausführungsstunden - Steuert, wann neue Kopiervorgänge gestartet werden können.
/PF :: Überprüft die Ausführungsstunden pro einzelne Datei (nicht pro Durchgang).
/IPG:n :: Abstand zwischen Paketen (ms), um bei langsamen Verbindungen Bandbreite freizugeben.
::
:: Dateiauswahloptionen:
::
/A :: Kopiert nur Dateien mit dem "Archive"-Attribut.
/M :: Kopiert nur Dateien mit dem "Archive"-Attribut und setzt das Attribut zurück.
/IA:[RASHCNETO] :: Schließt nur Dateien ein, bei denen eines der Attribute festgelegt ist.
/XA:[RASHCNETO] :: Schließt Dateien aus, bei denen eines der Attribute festgelegt ist.
/XF Datei [Datei]:: Schließt Dateien aus, die mit den angegebenen Namen/Pfaden/Platzhaltern übereinstimmen.
/XD Verz. [Verz.]:: Schließt Verzeichnisse aus, die mit den angegebenen Namen/Pfaden übereinstimmen.
/XC :: Schließt geänderte Dateien aus.
/XN :: Schließt neuere Dateien aus.
/XO :: Schließt ältere Dateien aus.
/XX :: Schließt zusätzliche Dateien und Verzeichnisse aus.
/XL :: Schließt einsame Dateien und Verzeichnisse aus.
/IS :: Schließt identische Dateien ein.
/IT :: Schließt optimierte Dateien ein.
/MAX:n :: Maximale Dateigröße - schließt Dateien aus, die größer als n Bytes sind.
/MIN:n :: Minimale Dateigröße - schließt Dateien aus, die kleiner als n Bytes sind.
/MAXAGE:n :: Maximales Dateialter - schließt Dateien aus, die älter als n Tage/Datum sind.
/MINAGE:n :: Minimales Dateialter - schließt Dateien aus, die neuer als n Tage/Datum sind.
/MAXLAD:n :: Maximales Datum des letztes Zugriffs - schließt Dateien aus, die seit n nicht verwendet wurden.
/MINLAD:n :: Minimales Datum des letztes Zugriffs - schließt Dateien aus, die seit n verwendet wurden.
(Wenn n < 1900, dann ist n = n Tage, andernfalls ist n = Datum im Format JJJJMMTT).
/XJ :: Schließt Abzweigungspunkte aus (werden normalerweise standardmäßig eingeschlossen).
/FFT :: Geht von FAT-Uhrzeitangaben für Dateien aus (Granularität von zwei Sekunden).
/DST :: Kompensiert Zeitunterschiede von einer Stunden aufgrund der Sommerzeit.
/XJD :: Schließt Abzweigungspunkte für Verzeichnisse aus.
/XJF :: Schließt Abzweigungspunkte für Dateien aus.
::
:: Wiederholungsoptionen:
::
/R:n :: Anzahl von Wiederholungsversuchen bei fehlerhaften Kopiervorgängen. Der Standardwert ist 1 Million.
/W:n :: Wartezeit zwischen Wiederholungsversuchen. Der Standardwert ist 30 Sekunden.
/REG :: Speichert "/R:n" und "/W:n" in der Registrierung als Standardeinstellungen.
/TBD :: Wartet darauf, dass Freigabenamen definiert werden (Wiederholungsfehler 67).
::
:: Protokollierungsoptionen :
::
/L :: Listet nur auf. Es werden keine Kopiervorgänge ausgeführt, Zeitstempel erstellt oder Dateien gelöscht.
/X :: Meldet alle zusätzlichen Dateien, nicht nur die ausgewählten Dateien.
/V :: Erstellt eine ausführliche Ausgabe mit ausgelassenen Dateien.
/TS :: Schließt Zeitstempel von Quelldateien in die Ausgabe ein.
/FP :: Schließt den vollständigen Pfadnamen von Dateien in die Ausgabe ein.
/BYTES :: Gibt Größen in Bytes aus.
/NS :: Keine Größe - Dateigrößen werden nicht protokolliert.
/NC :: Keine Klasse - Dateiklassen werden nicht protokolliert.
/NFL :: Keine Dateiliste - Dateinamen werden nicht protokolliert.
/NDL :: Keine Verzeichnisliste - Verzeichnisnamen werden nicht protokolliert.
/NP :: Kein Status - der Prozentsatz kopierter Elemente wird nicht angezeigt.
/ETA :: Zeigt die ungefähre Empfangszeit der kopierten Dateien an.
/LOG:Datei :: Gibt den Status der Protokolldatei aus (überschreibt das vorhandene Protokoll).
/LOG+:Datei :: Gibt den Status der Protokolldatei aus (wird an das vorhandene Protokoll angefügt).
/UNILOG:Datei :: Gibt den Status der Protokolldatei als UNICODE aus (überschreibt das vorhandene Protokoll).
/UNILOG+:Datei :: Gibt den Status der Protokolldatei als UNICODE aus (wird an das vorhandene Protokoll angefügt).
/TEE :: Gibt die Daten in das Konsolenfenster und die Protokolldatei aus.
/NJH :: Kein Auftragsheader.
/NJS :: Keine Auftragszusammenfassung.
/UNICODE :: Gibt den Status als UNICODE aus.
::
:: Auftragsoptionen:
::
/JOB:Auftragsname :: Übernimmt Parameter aus der angegebenen Auftragsdatei.
/SAVE:Auftragsname :: Speichert Parameter in der angegebenen Auftragsdatei.
/QUIT :: Beendet den Vorgang nach der Verarbeitung der Befehlszeile (zum Anzeigen von Parametern).
/NOSD :: Es ist kein Quellverzeichnis angegeben.
/NODD :: Es ist kein Zielverzeichnis angegeben.
/IF :: Schließt die folgenden Dateien ein.

Tags:  Feed Tag,  Feed Tag

Allgemein

 

Comments (20) -

>

1/15/2008 1:51:00 AM#

ich wollte auch nur auf ein weiteres tool verweisen, nicht das andere schlecht machen ;)
die neue backup software in vista jedenfalls ist ein wenig "strange"...

rolf | Reply

>

1/15/2008 1:51:00 AM#

So, hab nun den Grund für die "doppelte Sicherung" gefunden:

Bei mir waren als versteckte Systemordner 3 Verknüpfungen unter Users\\Documents angelegt (für Bilder, Videos, Music)

diese Verknüpfungen hab ich gelöscht - seitdem werden die entsprechenden Ordner nicht mehr doppelt gesichert.

.::greez aus Linz::.

BranBern | Reply

>

1/15/2008 1:51:00 AM#

Ja, darüber schreibe ich gerade an einem Artikel. Aber da sich dieser Blog ja weder auf Enterprise noch auf homeuser beschränkt, finde ich den Artikel ziemlich gut. Vor allem, weil es wieder etwas aufzeigt, was in Vista einfach "dabei" ist, aber wohl eher wenig bekannt. Was aber aufgrund der Mächtigkeit von robocopy schade ist.

Georg Binder | Reply

>

1/15/2008 1:51:00 AM#

Erstmal ein Lob für die tollen Beiträge hier im Blog! Weiter so!
Als ich heute den Artikel über Robocopy gelesen habe, musste ich ein wenig schmunzeln, da ich dieses tolle Tool doch glatt wieder vergessen hatte (kam bei mir unter XP schon ein paar Mal zum Einsatz). Sofort habe ich natürlich gleich unter Vista damit rumgespielt.
Wenn ich aber Robocopy unter Vista verwende um z.B. die Daten von C:\\Users\\... zu kopieren, bekomme ich eine Endlos-Rekursion bei einem Quellordner. Z.B. sieht das dann im Log so aus:
C:\\Users\\Markus\\AppData\\Local\\Anwendungsdaten\\Anwendungsdaten\\Anwendungsdaten\\... usw.
Wenn ich aber jetzt per cmd in diese vielen Anwendungsdaten-Ordner wechsle, so scheint es, als ob die wirklich existieren - oder ist da ein Bug im Dateisystem? Kennt das Problem jemand?
Grüße Markus

Markus F. | Reply

>

1/15/2008 1:51:00 AM#

Das liegt vermutlich daran, dass es den Ordner "Bilder" in Vista nicht gibt - er heißt in Wirklichkeit Pictures, wird nur durch die gewählte Anzeigesprache von Windows Vista in der Anzeige übersetzt. Der Ordner Download heisst Downloads, Dokumente heißt Documents, Kontakte Contacts usw.

Geh einfach in deinen Benutzerordner und klicke dann im Menü wo der Pfad angezeigt wird rechts neben den Pfad - dann siehst du den tatsächlichen Pfadnamen auf der Festplatte.

Georg Binder | Reply

>

1/15/2008 1:51:00 AM#

Ah...

Super.. Danke dir für die Erklärung... Ich habe den Computerschutz nun eingeschaltet... Da ist nur das Problem, dass die Sicherung ja auf dem Datenträger, der ja gesichert werden soll... Aber ich teste gerade Windows 7 und da läuft Acronis Trueimage 2009 nicht. Da kam mir dein Artikel mit Robocopy in den Kopf... Als Übergangslösung erst mal genau das richtige...

Stefan | Reply

>

1/15/2008 1:51:00 AM#

Ist nicht der beste Weg die zu löschen, aus Gründen der Kompatibilität mit älteren Programmen.
Besser wäre es, diese "Verknüpfungen", genauer eigentlich "Verzeichnisverbindungen" oder (lt. Robocopy Beschreibung) "Abzweigungspunkte". (Englisch: Junction points bzw. Directory Junctions) auszuschließen, mittels robocopy Switches /XJ bzw. /XJD und /XJF.

Christian Haberl | Reply

>

1/15/2008 1:51:00 AM#

Unter Vista kannst du mit /XJD und /XJF Abzweigungspunkte (Softlinks) ausschließen:

    /XJD :: Schließt Abzweigungspunkte für Verzeichnisse aus.
    /XJF :: Schließt Abzweigungspunkte für Dateien aus.

Vor Windows Vista ging das mit “/XJ“:

    /XJ : eXclude Junction points. (normally included by default).

Christian Haberl | Reply

>

1/15/2008 1:51:00 AM#

Habe folgendes Herausgefunden:

Die Sicherung läuft ganz brav durch - nur werden die Ordner Dokumente, Bilder, Videos, Musik, Downloads von Robocopy 2x gesichert - und zwar in den Dokumente Ordner und ins Root des Sicherungsordners - mit dem Attribut "Versteckt"

irgendwie pflanzt mich das Robocopy etwas ,-)

BranBern | Reply

>

1/15/2008 1:51:00 AM#

Hallo,

hab das auch über den Resource Kit genutzt - seit Vista warte ich eigentlich wieder auf diese lösung ,-)

Mein Problem ist folgendes:

Meine "Eigenen Dateien" sind umgeleitet auf die 2. Partition aber im großen und ganzen der Ordnerstruktur gleich geblieben, als wie wenn mann es bei der Standard-Vista-Installation belassen hätte.

Per Robocopy (@ Christian: habs auch mit deinem Script probiert)
kopiert er brav alle meine eigenen angelegten Ordner unter D:\\Users\\"Benutzer"  nur die bei der Vista installation angelegten Ordner (Bilder, Downloads,...) scheinen zwar in der Log datei auf - nur find ich im Backupordner keine Kopie davon?

was mach ich da falsch?

BranBern | Reply

>

1/15/2008 1:51:00 AM#

Hallo,

das ist echt ein klasse Programme. Tobe mich gerade damit aus. Nur ist mir noch nicht ganz klar, wie ich dabei die oben erwähnten DIFFERENZIELLEN oder inkrementelle Backups hinbekomme. Welche Option besagt das denn?

Kann mir da vielleicht einer weiterhelfen?

Danke,

Stefan

Stefan | Reply

>

1/15/2008 1:51:00 AM#

ist die frage ob der homeuser nicht gleich auf das enduser freundliche tool sync toy setzt: rolfm.wordpress.com/.../

rolf | Reply

>

1/15/2008 1:51:00 AM#

Jaja, ich werde auf jedennfall den Link in den Artikel einbauen Smile

Zur Backup Software in Vista: nun ja... für mich unverständlich, warum man NTBackup nicht optional für den Pro User drinnen gelassen hat. Schon ok, wenn man eine "einfache" Applikation, die 90% der Anwender voll befriedigen kann, unterbringt.

Nicht Supportet, aber funktionsfähig: http://www.vistablog.at/stories/16139/">NT Backup unter Vista

Georg Binder | Reply

>

1/15/2008 1:51:00 AM#

Ein Differential Backup ist ein solches, bei dem nur die Änderungen seit dem letzten Full Backup kopiert werden. Ein Incremental Backup kopiert nur die Änderungen seit dem letzten Differential Backup.
Eigentlich macht Robocopy keines von dem oder aber alles zugleich (wie man's sieht). Robocopy (mit den richtigen Switches .i.e. /MIR etc.) spiegelt Files und Folder von der Quelle zum Ziel und kopiert dabei nur Dateien die kopiert werden müssen (weil sie neu sind oder sich geändert haben), und löscht Dateien im Ziel, die in der Quelle gelöscht wurden.
So gesehen ist das erste Backup mit meinem Script ein "Full Backup", das zweite ein "Differential Backup" und das dritte ein "Incremental Backup" -
Was man aber nicht auf einfache Weise lösen kann, ist mehrere Zustände behalten. Wenn ich ein klassisches Backup habe, z.B. Full Backup am Montag, Differential oder Incremental täglich Dienstag bis Freitag, dann kann ich den Inhalt des Backups zu jedem beliebigen Wochentag wiederherstellen. Nicht so bei meinem Robocopy Script (obwohl ich nicht ausschließe, dass es mit einem aufwendigeren Script möglich wäre) - Also wie würde ich das lösen? - Ganz einfach, auf dem Ziel Server einfach Shadow Copy aufdrehen, ein Snapshot pro Tag, möglichst zu einem Zeitpunkt wo robcopy gerade nicht läuft.

Georg Binder | Reply

>

1/4/2010 12:57:31 PM#

servus,

hab mir gerade eine robocopy batch geschrieben und dabei ist folgendes problem aufgetaucht:
/eta sollte die ungefähre dauer auspucken. ich erhalte aber keine anzeige. außerdem erhalte ich auch keine anzeige für den prozentualen fortschritt...
das problem ist dass ich glaube dass er nach einiger zeit hängen bleibt, da das logfile nicht zu ende geführt wird.
mit /r:1 /w:1 müssten  aber doch zugriffsgesperte systemdateien übersprungen werden, oder nicht?

MoeGermany | Reply

>

3/9/2010 2:53:20 PM#

Hallo,
ich habe ein Problem mit Robocopy.

Wenn man Verzeichnisse kopiert, in dem eine Datei 200611~1.PPT benannt ist und gleichzeitig eine Datei 20061106_WG.PPT, dann hat man vermutlich am Ziel nicht das selbe Ergebnis.

Bitte um Antwort.
Sepp

Josef WippelAustria | Reply

>

7/2/2010 11:31:45 AM#

Hallo,
ich finde das nicht in Ordnung, wenn mit diesen Optionen beide Quelldateien gelöscht werden:

  Options : /JOB *.* /TS /TEE /S /E /NOCOPY /MOV /Z /NP /ETA /IS /XJ /PF /R:5 /W:5

-------------------------------------------------------------------

                           2    L:\MF\docs\

            Newer                  97792 2010/07/02 09:20:35    A.doc
            Same                  652800 2008/12/17 15:20:15    B.doc

Josef WippelAustria | Reply

>

10/24/2011 4:34:09 PM#

hi georg,

schreibe grad an einem robo skript. habe in deinem artikel die möglichkeit der dif sicherung entdeckt. leider scheint der link zu deinem skript nicht mehr zu stimmen. könntest du ihn korrigieren?

danke und gruß
brampftl

brampftlGermany | Reply

>
>

10/24/2011 4:48:21 PM#

Was mir etwas schwer fällt, weil ich nicht mal der Original-Autor bin, sondern Christian (ich mail ihm), kannst Du nur mal kurz andeuten, welcher Link der gesuchte ist, denn dieser ARtikel hat wohl die eine oder andere Migration der Blogsoftware nur bedingt überlebt,....

Georg BinderAustria | Reply

>

5/13/2012 12:24:30 PM#

Hallo zusammen,

das Thema wurde ja schon angesprochen: hat jemand eine Möglichkeit parat, über Robocopy inkrementelle Backups zu machen, so dass mehrere Datenbestände erhalten bleiben und man gezielt auf einen bestimmten Stand zurückgreifen kann? Die c't hat in Ausgabe 2006/09 mal ein rsync-Skript vorgestellt, das das können soll: die Dateien des Komplett-Backups werden in den inkrementellen Ordnern über Hardlinks verfügbar gemacht, sodass man aus jedem Ordner auf den *gesamten* Datenbestand zugreifen kann. Leider habe ich es nie zum Laufen gebracht. Wenn also jemand dafür eine Robocopy-Lösung hätte, die über einen Datumsschalter (es gibt da, glaube ich "%date%") einen tagesaktuellen Ordner mit inkrementellen Daten erstellt, wäre ich extrem dankbar.

FxGermany | Reply

Add comment

  Country flag

biuquote
Loading

Datenschutzhinweis: Sie stimmen durch "Kommentar speichern" der Speicherung Ihrer Angaben durch Microsoft Österreich für die Beantwortung der Anfrage zu. Sie erhalten dadurch keine unerwünschten Werbezusendungen. Ihre Emailadresse wird auf Ihren Wunsch dazu verwendet Sie über neue Kommentare zu informieren.

Microsoft respektiert den Datenschutz. Datenschutz & Cookies