Fragensteller
[W2K16] Robocopy /move Datenintegrität

Frage
-
Servus Community,
wir arbeiten gerade an einem Konzept für die Langzeit-Archivierung von abgeschlossenen Produktionsaufträgen und suchen nach einer Möglichkeit die Daten in einem ersten Schritt in ein als Landing Zone definierten Verzeichnis zu verschieben. Unser Wunsch ist es, dem Benutzer die Möglichkeit zu geben, Projektverzeichnisse mit einem _ARCHIV Suffix zu versehen. Also zB 0815_Katalog_Kunde_Huber_ARCHIV. Wir wollten nun ein Script jede Nacht über den Fileserver laufen lassen, welches Verzeichnisse mit diesem _ARCHIV Suffix sucht und mit allem Inhalt in die Landing Zone verschiebt UND im Anschluss auf dem Quell(File)Server löscht.
Die Frage die jetzt gerade diskutiert wird, ist, wie wir sicherstellen können, dass die Daten sauber verschoben wurden, bevor sie gelöscht werden. Es stehen Konzepte zur Diskussion, wie zB mit Checksummen zu arbeiten etc. Das macht die Sache aber möglicherweise komplizierter als sie sein müsste, weil ich mir auch vorstellen kann, dass Robocopy das zB bereits von sich aus macht. Daher die Frage in die Runde, wie Robocopy die Datenintegrität sicherstellen könnte?
Des Weiteren wären noch weitere Abfragen sinnvoll:
- Die Gesamtgröße des Projektverzeichnisses: Damit der Benutzer nicht versehentlich den halben Fileserver archiviert, hatten wir die Überlegung, die Gesamtgröße des Verzeichnisses abzugleichen und beim Überschreiten eines sinnvollen Werts (zB 20 GB) die Aktion nicht auszuführen und idealerweise eine Fehlermeldung mitzuloggen.
- Die Suchtiefe einzuschränken: Diese Projektverzeichnisse sind nicht in allen Tiefen des Verzeichnisbaums zu erwarten. Um unnötigen Overhead bei der Suche zu vermeiden, dachten wir daran, die Suchtiefe auf drei oder vier Verzeichnisebenen zu beschränken. Aber jedoch nur bei der Suche nach diesem _ARCHIV Suffix. Das Verschieben soll dann schon den gesamten Inhalt des klassifizierten Verzeichnisses erfassen, egal, wie tief es dann hinunter geht.
- Den Verzeichnisnamen nach bestimmten Kriterien zu überprüfen: Es muss zB auch sichergestellt werden, dass der oberste Verzeichnisname auch allen notwendigen Daten beinhaltet, die benötigt werden, um das Projekt im Archiv später wieder zu finden. Dazu gehlrt zB eine Auftragsnummer aus soundsoviel Ziffern am Anfang des Namens. Also dass das 0815 auch verlässlich im Namen steht und nicht versehentlich ein Verzeichnis tiefer zB 'gelieferte Daten' archiviert wird, dass gibt es nämlich einige 1000 mal...
Die letzten Kriterien wären unter UNIX zB mit find abbildbar aber uns wäre schon recht, insgesamt soweit wie möglich mit Boardmitteln auszukommen.
Wenn jemand Anregung dazu hat oder ähnliches sogar schon mal gebaut hat, wären wir sehr daran interessiert zu erfahren, wie ihr das umgesetzt habt.
Thx & Bye Tom
- Bearbeitet Thomas Pronto Wildgruber Mittwoch, 12. Februar 2020 15:26
Alle Antworten
-
Hi,
meines Wissens hat robocopy keine Funktion zur Überprüfung der Datenintigrität. Aber Checksummen wären eine Möglichkeit.
Oder ihr packt den Ordner vorher in ein Archiv. 7zip lässt sich z.B. auch mit Parametern aus der powershell steuern.
Alle eure Anforderungen sind auf jedenfall mit powershell umsetzbar.
Die Ordnertiefe, die durchsucht werden soll, lässt festlegen.
Du kannst Ordner und Dateien beliebig nach ihren Parametern filtern.
Du kannst die Ordnernamen mit Mustern vergleichen.
Letzten Endes musst du nur über alle Verzeichnisse mit einer Schleife iterieren, die deinen Filterkriterien entspricht.
Die Ergebnisse kannst du dann an robocopy übergeben.
Wenn du vorher zu allen Ordnern einen Hash erstellen willst oder sie gar packen willst, kann das den Verarbeitungsprozess
halt unter Umständen extrem verlängern.
Was ich bei solchen Skripten noch gerne mit rein nehme ist ein Errorhandling, falls Ziel oder Quelle nicht Verfügbar ist.
Gruß
- Bearbeitet marc-sysadmn Donnerstag, 13. Februar 2020 09:48
-
Wir haben so was zwar gebaut, das kann ich Dir aber nicht geben - (c) und so :-)
Robocopy zum Kopieren ist ok - drumrum ein wenig Powershell, das erledigt dann den Rest. Und wenn die Laufzeit kein K.O.-Kriterium ist, brauchst auch nicht mit Jobs oder Runspaces zu arbeiten.
Ah - Nachtrag: Wie Marc schon schrieb - eine Hash-Prüfung führt zu einer mehr als verdoppelten Laufzeit, denn Du mußt dazu alle Quelldateien zweimal lesen und auch die Zieldateien noch einmal. Ganz grob landest Du beim Faktor 2 bis 2,5.
- Bearbeitet Martin Binder Freitag, 14. Februar 2020 10:44
-
Ah - Nachtrag: Wie Marc schon schrieb - eine Hash-Prüfung führt zu einer mehr als verdoppelten Laufzeit, denn Du mußt dazu alle Quelldateien zweimal lesen und auch die Zieldateien noch einmal. Ganz grob landest Du beim Faktor 2 bis 2,5.
Nicht zwangsläufig. Ich habe das mal für eine PST-Migration gebaut. Das Netz war so flaky, dass die Hash-Prüfung dringend geboten war - und aus eben diesem Grund über das Netz nicht wirklich durchführen ließ, zumal PST-Dateien ja in der Regel nicht ganz klein sind.
Wir haben eine SQL-Datenbank dazwischen gepackt und den Hash immer jeweils lokal gerechnet - an der Quelle und im Ziel - und in die Datenbank geschrieben. Danach konnte man das schön abgleichen und das Kopieren evtl. wiederholen.
Bei solch einer Vorgehensweise ist der Vorgang zeitlich entkoppelt und geschieht quasi parallel, und z.B. das Löschen des Originals kann an die Berechnung des Ziel-Hashes und den erfolgreichen Abgleich gekoppelt werden...
Evgenij Smirnov
-
Aber das Forum ist keine Vermittlungsplattform für Aufträge =)
Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq