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:
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.
"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.