robocopy

robocopy – schnelles Backup in Windows

Jetzt oute ich mich: Terminalprogramme sind ein Quell der Freude! Meist sind die Konsolenprogramme klein, schnell und effizient, ganz nach dem KISS-Prinzip.
Und Microsoft hat mit „robocoby“ ein ansehnliches Produkt geschaffen, um komfortable Datensicherungen durchzuführen. Ich beziehe mich in diesem Beitrag auf die robocopy-Version in „Microsoft Windows [Version 10.0.19042.868]“.
Hier gebe ich einige Hinweise zur Nutzung.

Inhaltsverzeichnis

  • Lizenz
  • Einsatzgebiete
  • Vorteile
  • Nachteile
  • Funktionsweise
  • Syntax
  • Option „/MT“
  • Szenario
  • Weitere Informationen

Lizenz

Die Erlaubnis der Nutzung entspricht der EULA von Window, so meine Annahme, also keine Open Source Software. Das gefällt mir nicht, aber die Einfachheit von robocopy, macht die Arbeitsweise doch etwas transparent.

Einsatzgebiete

  • Firmenumfeld und Organisationen
  • Betreuung von mehreren Arbeitsplätzen
  • Sicherung auf NAS oder/und Server oder/und Cloud

Vorteile

  • Einfacher Syntax
  • Die Eingabe von „robocopy /?“ zeigt 92 Optionen an
  • Filtern von Verzeichnissen und Dateien
  • Auch mit Wildcards an beiden Seiten von Dateien
  • Sehr schnelle Datensicherung
  • Kombinierbar mit anderen Batch-Befehlen
  • Kein großes Programm mit ungewollten Abhängigkeiten
  • Kann sehr gut integriert werden in schon vorhandene Strukturen

Nachteile

  • Keine Open Source Software, was mehr zur Sicherheit beigetragen hätte
  • Die Microsoft-Dokumentation auf Deutsch ist bei einigen Optionen unklar
  • Die Option /UNICODE beinhaltet nur den Zeichensatz Unicode „ISO10646“ sowie „IBM850“ und damit leider immer noch nicht „Unicode Transformation Format“, wie „UTF-8“

Funktionsweise und Option „/MIR“

Also das wird jetzt spekulativ, doch das liegt an Microsoft selbst.
Beispielsweise steht die wichtigste Option „/MIR“ für das Spiegeln von Datenverzeichnissen, also das komplette Übertragen der Daten von Quelle zum Ziel ohne Inhalt. Aber in Wirklichkeit wird inkrementell Synchronisiert.
Doch auch das ist nicht richtig, denn inkrementell bedeutet nicht nur, dass neue Dateien hinzugefügt werden, beim inkrementellem Sichern werden im Quellverzeichnis gelöschte Dateien im Zielverzeichnis beibehalten.
Bei der Option „/MIR“ werden die im Quellverzeichnis gelöschten Daten, ebenfalls im Zielverzeichnis gelöscht. Das ist mir sympathischer, denn wenn man das Prinzip der Mehrfachsicherung nutzt, also „Großvater-Vater-Sohn“ oder die „Türme von Hanoi“, ist eine Verschlankung sinnvoller.

Syntax

Syntax-Übersicht mit Pfad zu robocopy. Es ginge auch nur mit der Angabe „robocopy“. Aber dieser Hinweis ist für Script-Schreiber die über virtuelle Maschinen oder Netzwerke hinweg arbeiten.

Ein weiterer Hinweis betrifft die Pfadangaben. Es sind nicht zwingend die Anführungszeichen notwendig, nur wenn der Pfad oder die Datei mindestens ein Leerzeichen besitzt. Trotzdem, auch aus Bequemlichkeit setze ich alles in Anführungszeichen.

<Pfad\zu\robocopy> <Quelle> <Ziel> <Optionen>

Hier ein kleines Beispiel mit folgenden Merkmalen:

  • Zwei Sicherungsaufgaben die hintereinander abgearbeitet werden
  • Flexibel durch globale %Variablen%
  • Kopieren mit Unterverzeichnissen durch Option /E
  • Löschen von Daten im Zielverzeichnis mit /PURGE
  • Option /E und /PURGE in der Option /MIR zusammengefasst
  • Mehreren Verzeichnissen werden ausgeschlossen mit /XD
  • Mehrere Dateien werden ausgeschlossen mit /XF
  • FAT-Zeitausgleich mit /FFT
  • Sommer- und Winterzeit-Ausgleich durch /DST
  • Drei Wiederholungsversuche mit /R:3
  • Wartezeit zwischen den Wiederholungsversuchen von 3 Sekunden mit /W:3
  • Dateien mit Pfad /FP
  • Zeitstempel der Quelldatei beibehalten /TS
  • Ausgabe der übersprungenen Dateien /V
  • Alle Dateien melden, nicht nur die gesicherten /X
  • Ausführliche Anzeige und Log der Vorgänge im Terminal /TEE
  • UNICODE-Logdatei die fortlaufend ist mit /UNICODE /UNILOG+:“Pfad_zur_Datei_und_Dateiname“
  • Logdatei mit ausführlichem Dateinamen durch mehrere Variablen
  • Sicherung auf Netzlaufwerk „Z:\“
@echo off 
:: robocoby_%COMPUTERNAME%
"%SYSTEMROOT%\system32\robocopy.exe" "%SYSTEMDRIVE%\Programm\BACKUP" "Z:\Programm" /MIR /FFT /DST /R:3 /W:3 /FP /TS /V /X /UNICODE /UNILOG+:"%USERPROFILE%\Logs\rc-%COMPUTERNAME%_%USERNAME%_programm_%date:~6,4%-%date:~3,2%-%date:~0,2%.txt" /TEE
^
"%SYSTEMROOT%\system32\robocopy.exe" "%ProgramData%\ABC\AutoBackup" "Z:\ABC" /MIR /FFT /DST /XD "%ProgramData%\ABC\AutoBackup\Anwendungsdaten" "%ProgramData%\ABC\AutoBackup\System" /XF "*cache*" "desktop.ini" /R:3 /W:3 /FP /TS /V /X /UNICODE /UNILOG+:"%USERPROFILE%\Logs\rc-%COMPUTERNAME%_%USERNAME%_ABC_%date:~6,4%-%date:~3,2%-%date:~0,2%.txt" /TEE
exit

Option „/MT“

Von der Option „/MT“, also die Nutzung von Multithreading, halte ich nichts. Erstens wurde diese Option vor Spectre und Meltdown erschaffen und anderseits, wenn die Auslastung der CPU zur Überhitzung führt, kann der automatische Hitzeschutz greifen und damit verlangsamt sich der Vorgang sehr stark bei größeren Kopiervorgängen. Letztendlich wird damit das Gegenteil erreicht.
Besser man optimiert seinen Code im Syntax und erreicht damit Stabilität.

Option „/XX“

Diese Option „Extra“ ermöglicht Daten im Ziel zu halten, zusätzlich zu speichern oder teilbare Verzeichnisse zu halten, die nicht in der Quelle vorhanden sind.

Szenario

In meinen Szenarios startet eine Batch-Datei automatisch zur vorgegeben Zeit mit aufeinander folgenden Anweisungen.

  1. Schließe alle unnötigen Programme, Hintergrundprogramme und Dienste
  2. Bereinige das gesamte System
  3. Starte danach die separate robocopy-Batch-Datei
  4. Warte bis zum Ende der Ausführungen von den robocopy-Anweisungen
  5. Warte weiterhin mit einer Pause von wenigen Sekunden, damit das System noch alle Arrays leeren kann
  6. Fahre das komplette System herunter

Vorteile dieses Szenarios

  1. Es wird kein temporärer Müll gesichert
  2. Die zentrale Prozessoreinheit und der Arbeitsspeicher sind frei für die Sicherungsaufgabe
  3. Dazu geben die separaten Batch-Dateien eine bessere Möglichkeit für eine eventuelle Fehlersuche
  4. Und ein ausgeschalteter Computer kann nicht mehr infiltriert werden

Weitere Informationen

https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/robocopy


Ihr Kom­men­tar [Pos1] Sei­ten­an­fang