Robocopy mit Powershell und Fortschrittsanzeige

Mitglied: SamTrex

SamTrex (Level 1) - Jetzt verbinden

27.01.2016, aktualisiert 13:01 Uhr, 15497 Aufrufe, 3 Kommentare, 9 Danke

Die Aufgabe
Ich sichere von Zeit zu Zeit verschiedene Verzeichnisse von unserem Familien-Server auf mehrere externe Festplatten weg.
In Powershell war das schnell eingerichtet:
Dabei wird in der Datei copyjob.txt je das zu sichernde Verzeichnis angegeben. Dieses wird dann vom Server auf die Platte gesichert.
PRO
    • Einfach
    • Schnell
NEG
    • Unübersichtlich in der Ausgabe
    • Keine Vergleichbarkeit zwischen den Sicherungsständen auf den Platten
    • Copyjob.txt liegt auf der Sicherungsplatte, dadurch ist es bei mir schon mal zu unterschiedlichen Sicherungen gekommen.

So entschied ich mich dazu, es etwas komplexer, in der Ausgabe aber optisch schöner ...
c5586e7f1365086bc75e474b16db3dbe - Klicke auf das Bild, um es zu vergrößern

und in den Logs etwas nachvollziehbarer zu machen.
0936b2f337b3ab8a775e882cff251a23 - Klicke auf das Bild, um es zu vergrößern
A = Kurzbeschreibung der Platte
B = Sicherungsdatum
C = Quelle
D = Anzahl zu kopierende Dateien
E = Größe aller Dateien in Bytes
F = Ziel
G = Anzahl zu kopierende Dateien
H = Größe aller Dateien in Bytes
Ist ab D der Rest leer, war die Sicherung aktuell und es musste nichts neues kopiert oder gelöscht werden.

Funktionsweise
  • Ermitteln des Laufwerksbuchstabens des Sicherungslaufwerks anhand hinterlegter Datenträgerseriennummern.
  • Robocopy im "Flugmodus" /L ausführen
  • Logfile einlesen und Dateien zählen sowie Datenvolumen berechnen
  • Robocopy im "Flugmodus" /L ausführen um ein "schönes" "lesbares" Log zu schreiben
  • Robocopy ausführen
  • Parallel in einer Schleife das Log einlesen und Dateien zählen sowie Datenvolumen berechen.
    1. Anhand dessen und der Daten aus dem ersten Flugmodus-Lauf wird die Differenz berechnet und eine Progressbar angesteuert
    2. Während des Kopiervorgangs wird eine Progressbar angezeigt. Hier stehen Informationen zu Dateianzahlen, Datenvolumen und Fortschritt in %
  • Sicherungsvorgang in Superlog (.csv-Datei) auf dem Server wegschreiben um eine Übersicht über alle Sicherungen auf allen Platten zu bekommen

Powershell - Code


Mein Fazit
  • Optisch und informativ gefällt es mir so sehr gut
  • Ich denke, das man hier und da mit Sicherheit noch etwas verbessern kann. Für Vorschläge bin ich immer offen.

Erweiterung
  • Da das Skript immer nur eine Mirror-Copy anlegt, möchte ich es gerne noch erweitern. Zu löschende Dateien sollen zuvor noch einmal separat gesichert werden. Dazu habe ich hier im Forum schon etwas gefunden. Allerdings muss ich es noch verstehen und dann in Powershell implementieren.

Gruß Sam
Mitglied: Bernie429
01.02.2016, aktualisiert um 16:00 Uhr
Ich bin selber nicht der Powershell Papst aber wäre es nicht praktischer die Sicherungslaufwerke in ein einziges multidimensionales Array zu speichern anstatt in 3 Arrays? Dann wäre eine Zeile immer ein Laufwerk und das Rechnen mit $i entfiele.

Habe ich jetzt nicht getestet aber ich habe mir die Infos aus diesen Seiten raus gesucht:
http://blogs.technet.com/b/heyscriptingguy/archive/2011/12/10/create-a- ...
http://stackoverflow.com/questions/9397137/powershell-multidimensional- ...

Auf jeden Fall vielen Dank für Dein Script. Ich werde es sicherlich ausprobieren. Sieht sehr vielversprechend aus.

Tschüß

Bernie
Bitte warten ..
Mitglied: SamTrex
08.02.2016 um 07:54 Uhr
Hallo Bernie,
vielen Dank für den Tipp. Mich hat es auch geärgert das ich es nicht anders hin bekommen habe. Ich werde mir Deine Links einmal anschauen und das - wenn ich es hin bekomme - abändern.
Gruß Sam
Bitte warten ..
Mitglied: Sittsoft
02.12.2019 um 08:03 Uhr
Hallo Sam,
Hallo andere User,
das Script und der Post zu "Robocopy mit Powershell und Fortschrittsanzeige" liegt hier schon eine Weile. Dennoch habe ich eine Bitte an alle die mir helfen können oder wollen. ich würde gerne das Script anwenden, aber ich bekomme es einfach nicht hin, es so umzuschreiben, dass das komplizierte Einlesen der Laufwerke wegfällt und ich statt dessen einfach zwei Pfade (Quelle und Ziel) angeben kann.

Kann mir dabei Jemand helfen?

Das wäre echt cool. Vielen Dank schon mal...

Ronald
Bitte warten ..
Heiß diskutierte Inhalte
LAN, WAN, Wireless
Starlink im Unternehmen?
0xFFFFVor 15 StundenFrageLAN, WAN, Wireless37 Kommentare

Guten Morgen Admins, leider leiden wir darunter, dass wir uns hier in DE noch in einem Entwicklungsland was die Internetanbindung angeht, sehr. Nun kam ...

Off Topic
Klimaanlage im Serverraum
gelöst imebroVor 11 StundenFrageOff Topic19 Kommentare

Hallo, wir haben einen kleinen Serverraum (viell. 5 - 6 m²), in dem ein Serverschrank steht. Der Raum hat kein Fenster!!! Darin befinden sich ...

Microsoft
Datenkrake - Browser
DennisWeberVor 1 TagErfahrungsberichtMicrosoft10 Kommentare

Hallo zusammen, ich empfehle euch mal definitiv in "Temp" Verzeichnis eures Browsers zu schauen. Es war für mich erschreckend, wie viele wichtige Dokumente und ...

Netzwerkmanagement
Sicherheitsrisiken Synology DS Admin Konto
RitchtoolsVor 1 TagFrageNetzwerkmanagement6 Kommentare

Hallo Zusammen, ich habe die Pflege von einem Firmen NAS übernommen (Synology) es sind mehrere Rechner im Netzwerk die auf Daten zugreifen. Leider hat ...

Windows 10
Windows 10 hängt bei Neustart immer bei "Bitte warten" über Stunden
gelöst Odde23Vor 13 StundenFrageWindows 1023 Kommentare

Ich habe seit längerem, um genau zu sein seit gut einem Jahr, da wurde der Rechner gekauft, das Problem, dass der Rechner bei einem ...

Windows 10
Windows 10 System Recovery Ordner fast 60 GB - Wie löschen?
Looser27Vor 1 TagFrageWindows 106 Kommentare

Guten Morgen, bei einem unserer Clients funktioniert scheinbar das automatische Aufräumen nach Updates / Upgrades nicht. Wie kann ich dem Kollegen auf die Schnelle ...

Windows 10
Windows 10 verliert die Druckertreiber
KMP1988Vor 1 TagFrageWindows 1010 Kommentare

Servus zusammen, wir haben bei einem Kunden folgende Konstellation: - Server2019 (AD, DNS, DHCP) - Server2019 (Print-Server-Rolle) - W10-Clients Die Drucker werden übers Logon-Scirpt ...

DNS
Opendns.com - Kosten?
cordialVor 1 TagFrageDNS2 Kommentare

Moin, Ich möchte gerne den OpenDNS Dienst mal verstehen. Hab da schon länger einen Account mit Filterung. Die "Free" Edition bei OpenDNS ist doch ...