noobi 4 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 (bearbeitet) Hallo Zusammen, gerne möchte ich mich näher mit dem Thama Skripting befassen. Unsere Firmendaten liegen alle auf dem Server wo sie hingehören. Nun möchten wir gerne einen Teil unserer Daten über ein NAS für unsere Mitarbeiter freigeben. (QNAP NAS mit Qfile App) Denen soll es von der Baustelle aus ermöglicht werden, per Smartphone/Tablet Zugriff auf Planunterlagen zu bekommen. Die Daten müssen also vom Server Share auf das SMB Share des NAS kopiert werden. Meine Gedanke ist es ein Skript zu erstellen, dass regelmäßig prüft ob es neue Ordner/Dateien gibt und diese ggf. kopiert. Ordnerstruktur auf dem Server: M:\Projekte_20\200323_Name Ort Bezeichnung Vorgaenge Bilder Korrespondenz Planunterlagen usw... Auf dem NAS soll das dann so aussehen: N:\Projekte\Projekte_20\200323_Name Ort Bezeichnung Bilder Planunterlagen Aktuell sind das 10 Terrabyte Daten, die durchsucht werden müssten. Pro Jahr sind es ca. 1000 Projektordner. Ist es bei dieser Menge überhaupt noch sinnvoll oder lege ich damit mein ganzes System lahm? Und welchen Weg würdet ihr mir dazu empfehlen? Eine Batchdatei mit xcopy oder wäre das die falsche herangehensweise? Wenn eine Datei in der Quelle nicht mehr vorhanden ist, sollte sie dann auch am Ziel (also NAS) gelöscht werden). Zum Beispiel wenn eine PDF Datei gelöscht wird und mit einem _Re01 neu gespeichert wird. bearbeitet 6. April 2020 von noobi Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 (bearbeitet) vor 54 Minuten schrieb noobi: N:\Projekte\Projekte_20\200323_Name Ort Bezeichnung Bilder Planunterlagen ... es geht also genau genommen um 2 Ordner mit Unterordnern? Zitat Aktuell sind das 10 Terrabyte Daten, die durchsucht werden müssten. Pro Jahr sind es ca. 1000 Projektordner. Ist es bei dieser Menge überhaupt noch sinnvoll oder lege ich damit mein ganzes System lahm? Das hängt stark von der Leistung der beteiligten Komponenten und "Verteilung/Aufteilung" der 10 Terrabyte und wieviel sich in welchem Zeitraum ändert bzw. wie oft das aktualisiert werden muss. Zitat Und welchen Weg würdet ihr mir dazu empfehlen? Eine Batchdatei mit xcopy oder wäre das die falsche herangehensweise? Vielleicht nicht xcopy aber robocopy. Zitat Wenn eine Datei in der Quelle nicht mehr vorhanden ist, sollte sie dann auch am Ziel (also NAS) gelöscht werden). Zum Beispiel wenn eine PDF Datei gelöscht wird und mit einem _Re01 neu gespeichert wird. robocopy mit Schalter /purge oder /mir. bearbeitet 6. April 2020 von BOfH_666 Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 6. April 2020 Autor Melden Teilen Geschrieben 6. April 2020 (bearbeitet) vor 21 Minuten schrieb BOfH_666: ... es geht also genau genommen um 2 Ordner mit Unterordnern? Der Ordner Projekte wäre bei allen identisch, dann gibt es eben N:\Projekte\Projekte_20 , N:\Projekte\Projekte_19 , N:\Projekte\Projekte_18 usw... vor 21 Minuten schrieb BOfH_666: Das hängt stark von der Leistung der beteiligten Komponenten und "Verteilung/Aufteilung" der 10 Terrabyte. Nunja, der Server auf dem der Befehl ausgeführt wird ist dann eine VM mit Windows Server 2019. Anbindung per 10G Kupfer an ein QNAP NAS ebenfalls per 10G. Der Fileserver ist mit 2 Kernen und 4GB RAM geplant, kann aber noch angepasst werden, sofern notwendig. vor 21 Minuten schrieb BOfH_666: robocopy mit Schalter /purge oder /mir. okay, muss ich mir mal reinziehen... Im Prinzip müsste dann ab dem Verzeichnis Projekte_20 geprüft werden ob ein Unterordner Planunterlagen vorhanden ist, wenn ja, dann kopiere die Unterordner X,Y,Z. Ideal dann natürlich das auch noch bedingt anhand des Dateinamens... (*.pdf im Ordner Planunterlagen, BE-*.pdf im Ordner Vorgaenge usw.) bearbeitet 6. April 2020 von noobi Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 vor 43 Minuten schrieb noobi: Der Ordner Projekte wäre bei allen identisch, dann gibt es eben N:\Projekte\Projekte_20 , N:\Projekte\Projekte_19 , N:\Projekte\Projekte_18 usw... Ah ... hatte ich falsch verstanden ... sollte aber auch kein Problem sein. vor 43 Minuten schrieb noobi: Nunja, der Server auf dem der Befehl ausgeführt wird ist dann eine VM mit Windows Server 2019. Anbindung per 10G Kupfer an ein QNAP NAS ebenfalls per 10G. Der Fileserver ist mit 2 Kernen und 4GB RAM geplant, kann aber noch angepasst werden, sofern notwendig. Das war weniger als Frage gemeint, sondern eher als Hinweis, dass das von verschiedenen Faktoren abhängig ist, deren genaue Auswirkungen auf die endgültige Performance man schwer vorhersagen kann. vor 43 Minuten schrieb noobi: okay, muss ich mir mal reinziehen... ... das kann nie schaden ... vor 43 Minuten schrieb noobi: Im Prinzip müsste dann ab dem Verzeichnis Projekte_20 geprüft werden ob ein Unterordner Planunterlagen vorhanden ist, wenn ja, dann kopiere die Unterordner X,Y,Z. Ideal dann natürlich das auch noch bedingt anhand des Dateinamens... (*.pdf im Ordner Planunterlagen, BE-*.pdf im Ordner Vorgaenge usw.) OK ... vielleicht schaust Du Dir erstmal die vielfältigen Möglichkeiten an, die man schon mit der Kommandozeile von robocopy hat. Und wenn das nicht genügt und Du dann trotzdem noch Unterstützung beim Script brauchst, kannst Du ja hier wieder fragen. Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 6. April 2020 Autor Melden Teilen Geschrieben 6. April 2020 Naja, der robocopy Befehl ist noch das geringste Problem, hier würde ich folgende Optionen wählen: /s Kopiert Unterverzeichnisse. Beachten Sie, dass bei dieser Option leere Verzeichnisse ausgeschlossen werden. /purge Löscht Zieldateien und-Verzeichnisse, die in der Quelle nicht mehr vorhanden sind /Mon:<1 > Überwacht die Quelle und wird erneut ausgeführt, wenn mehr als 1 Änderungen erkannt werden. Problem ist eher die ganze herangehensweise an diese Baustelle. Hier müsste ich dann vermutlich mit einer Schleife arbeiten. Es müsste geprüft werden ob es den Ordner *_Zeichnungen gibt (hier wurde mal die Verzeichnisstruktur geändert, war mal B02_Zeichnungen, aktuell D02_Zeichnungen, das würde ich gerne auch variabel lassen, falls hier ein User kreativ wird... \\Projekte\Projekte_*\*\*_Zeichnungen\*.* Wenn irgendeine Datei im Verzeichnis *_Zeichnungen vorhanden ist, dann kopiere Ordner alle Dateien BE-*.pdf aus dem Ordner Vorgaenge, den kompletten Ordner *_Zeichnungen, den kompletten Ordner *_Listen an den neuen Pfad Die Abfrage müsste ja dann für jeden Projektordner erstellt werden. Sollte man dann die Projektnummern mit Änderungen in eine Variable schreiben und dann später beim kopieren wieder entsprechend durch eine Schleife jagen? Man man man, hatte mal beim Anwendungsentwickler ein paar Tage .net, ist aber schon wieder ne Weile her... Oder würdest du das anders lösen? Kannst du ein gutes Wiki oder ähnliches zu dem Thema empfehlen? Tue mir da auch im Netz sehr schwer etwas passendes zu finden... Prüfen ob es einen Ordner *_Zeichnungen gibt (leider funktioniert das so noch nicht? Muss ich ein anderes Zeichen für die Wildcards nutzen? if exist P:\Projekte_*\*\*_Zeichnungen\*.* Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 vor 8 Minuten schrieb noobi: /Mon:<1 > Überwacht die Quelle und wird erneut ausgeführt, wenn mehr als 1 Änderungen erkannt werden. Wie aktuell muss das denn sein? Würde es z.B. auch genügen, wenn das einmal am Tag oder mehrfach am Tag zu definierten Zeiten passiert? vor 8 Minuten schrieb noobi: Problem ist eher die ganze herangehensweise an diese Baustelle. Hier müsste ich dann vermutlich mit einer Schleife arbeiten. Es müsste geprüft werden ob es den Ordner *_Zeichnungen gibt (hier wurde mal die Gibt es denn in der Verzeichnisstruktur so viele Ordner oder Dateien, die nicht kopiert werden sollen? Falls nicht, kann man diese Ordner/Dateien vielleicht einfach vom Copy-Job ausschließen? vor 8 Minuten schrieb noobi: Verzeichnisstruktur geändert, war mal B02_Zeichnungen, aktuell D02_Zeichnungen, das würde ich gerne auch variabel lassen, falls hier ein User kreativ wird... Je kreativer die Anwender werden (werden dürfen), desto aufwändiger und auch fehleranfälliger wird eine automatisierte Lösung. vor 8 Minuten schrieb noobi: Wenn irgendeine Datei im Verzeichnis *_Zeichnungen vorhanden ist, dann kopiere Ordner alle Dateien BE-*.pdf aus dem Ordner Vorgaenge, den kompletten Ordner *_Zeichnungen, den kompletten Ordner *_Listen an den neuen Pfad Häh? ... ist so ein komplexes Regelwerk wirklich nötig? vor 8 Minuten schrieb noobi: Die Abfrage müsste ja dann für jeden Projektordner erstellt werden. Sollte man dann die Projektnummern mit Änderungen in eine Variable schreiben und dann später beim kopieren wieder entsprechend durch eine Schleife jagen? Man man man, hatte mal beim Anwendungsentwickler ein paar Tage .net, ist aber schon wieder ne Weile her... Kann man alles machen, aber ... vor 8 Minuten schrieb noobi: Oder würdest du das anders lösen? ... ich arbeite gern nach dem KISS-Prinzip. Ich würde wenn möglich, wenn ich das alles richtig verstanden habe, den Inhalt des Ordners Projekte mittels einer möglichst einfachen robocopy-Kommandozeile in den Zielordner kopieren. vor 8 Minuten schrieb noobi: Kannst du ein gutes Wiki oder ähnliches zu dem Thema empfehlen? Tue mir da auch im Netz sehr schwer etwas passendes zu finden... ... das ist schon eine ziemlich spezielle Anforderung ... dafür direkt etwas Passendes zu finden, wird wohl nicht funktionieren. vor 8 Minuten schrieb noobi: Prüfen ob es einen Ordner *_Zeichnungen gibt (leider funktioniert das so noch nicht? Muss ich ein anderes Zeichen für die Wildcards nutzen? if exist P:\Projekte_*\*\*_Zeichnungen\*.* Das sieht nach VBScript aus - da muss ich passen. Und wenn Du vorhast, Dich noch ne Weile in Windows-Infrastruktur-Umgebungen rumzutreiben, würde ich Dir empfehlen, Dir die Grundlagen von Powershell anzueigenen. Das ist meiner Meinung nach deutlich einfacher als VBScript und Du findest auch deutlich mehr Unterstüzung im Netz. (und auch hier ) Das Vorhanden-Sein eines bestimmten Pfades - egal ob Datei oder Ordner machst Du mit Powershell ungefähr so: Test-Path -Path 'P:\Projekte_*\*\*_Zeichnungen\*' Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 6. April 2020 Autor Melden Teilen Geschrieben 6. April 2020 vor einer Stunde schrieb BOfH_666: Wie aktuell muss das denn sein? Würde es z.B. auch genügen, wenn das einmal am Tag oder mehrfach am Tag zu definierten Zeiten passiert? Naja, theoretisch würde es ausreichen 1x nachts, jedoch kommt es auch hin und wieder vor, das mal was schnell benötigt wird... Gut, dass könnte man aber auch zur Not händisch anschubsen... Müsste man mal testen wie schnell das ganze von statten geht... vor einer Stunde schrieb BOfH_666: Gibt es denn in der Verzeichnisstruktur so viele Ordner oder Dateien, die nicht kopiert werden sollen? Falls nicht, kann man diese Ordner/Dateien vielleicht einfach vom Copy-Job ausschließen? Ja, es sind schon viele Ordner, die nicht kopiert werden sollen. Grob gesagt 1/4 der Ordner soll kopiert werden. vor einer Stunde schrieb BOfH_666: Je kreativer die Anwender werden (werden dürfen), desto aufwändiger und auch fehleranfälliger wird eine automatisierte Lösung. Naja, die Pfade erstellt das ERP automatisch. So oft kommt es hier eigentlich nicht zu Änderungen. In den letzten Jahren war das jetzt 2x der Fall. Im Fall der Fälle, könnte man dann ja auch das Skript anpassen. vor einer Stunde schrieb BOfH_666: Häh? ... ist so ein komplexes Regelwerk wirklich nötig? Im Prinzip kann er alle Ordner kopieren, nur bei Vorgaenge liegen auch Angebote, Rechnungen usw, auf die ebenfalls kein Zugriff sein soll... In vielen Ordnern gibt es einen Archiv-Ordner mit alten Daten, die revisioniert wurden. Die müssten nicht kopiert werden. Daher der Gedanke nach *.pdf in den bestimmten Ordnern zu suchen. vor einer Stunde schrieb BOfH_666: KISS-Prinzip Das klingt gut vor einer Stunde schrieb BOfH_666: Und wenn Du vorhast, Dich noch ne Weile in Windows-Infrastruktur-Umgebungen rumzutreiben, würde ich Dir empfehlen, Dir die Grundlagen von Powershell anzueigenen. Ja, das ist schon länger mein Plan, wenn da nur nicht das Problem mit der Zeit wäre. Aber daher ja auch eingangs die Frage welchen Weg hier geeignet wäre. Wie sieht denn dein Gedanke dazu aus? Grundsätzlich alles kopieren und dann bestimmte Ordnernamen ausschließen? Ich stehe hier voll auf dem Schlauch, wie ich robocopy mitteilen soll, was er tun soll Wie ich das korrekt selektiere oder eben bestimmte Ordner abwähle. Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 6. April 2020 Autor Melden Teilen Geschrieben 6. April 2020 #Ermitteln ob Ordner Zeichnungen Dateien enthält if((get-childitem $QuellPfad).count -eq 0){ echo "Keine Zeichnungen gefunden..." }else{ echo "Es sind Zeichnungen vorhanden!" } Okay, hiermit erkenne ich schonmal ob der Ordner *_Zeichnungen vorhanden ist, und ob er Dateien beinhaltet. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 Wieso kommen die Clients (Smartphones, Tablets) an das NAS und nicht an den Server? Dann musst du nichts kopieren. Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 6. April 2020 Autor Melden Teilen Geschrieben 6. April 2020 Möchte nicht jedes Android Handy unserer Mitarbeiter auf unseren Server lassen. Die haben ein WLAN zum Datenabgleich der Zeiterfassung usw. sowie Internetzugang. Auf dem Server liegen alle Daten, für die Mitarbeiter ist ja nur ein Bruchteil der Daten relevant. Auf ein kleines NAS haben Sie Zugriff, dort sollen dann nur die relevanten Daten bereit liegen... Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 Das NAS und der Server sind aber im gleichen Netz? Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 6. April 2020 Autor Melden Teilen Geschrieben 6. April 2020 Nein, die Geräte sind in verschiedenen Netzen. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 Das NAS und der Server auch? Aber es besteht eine Netzwerkverbindung zwischen NAS und Server? Wieso dann das NAS? Mit entsprechenden ACLs können die Anwender nur auf das auf dem Server zugreifen, auf das Sie sollen. Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 6. April 2020 Melden Teilen Geschrieben 6. April 2020 /mon möchtest Du nicht verwenden. Das grast rekursiv die Quelle durch - jede Minute - und legt damit gerne mal was lahm... Erst recht nicht über UNC-Pfade - damit haben Azubis bei uns mal ein Messe-Netzwerk verstopft, indem das auf jedem Client lief... /mon ist KEIN Filesystem Watcher, das ist sinngemäß ein stupider DIR /S mit Suche nach Timestamps neuer als der letzte Aufruf. Zitieren Link zu diesem Kommentar
noobi 4 Geschrieben 16. April 2020 Autor Melden Teilen Geschrieben 16. April 2020 (bearbeitet) Guten Morgen, das Thema ist nicht vergessen, nur die Zeit ist wie immer Mangelware Am 6.4.2020 um 22:12 schrieb daabm: /mon möchtest Du nicht verwenden. Das grast rekursiv die Quelle durch - jede Minute - und legt damit gerne mal was lahm... Erst recht nicht über UNC-Pfade - damit haben Azubis bei uns mal ein Messe-Netzwerk verstopft, indem das auf jedem Client lief... /mon ist KEIN Filesystem Watcher, das ist sinngemäß ein stupider DIR /S mit Suche nach Timestamps neuer als der letzte Aufruf. Okay, danke für den Tipp! Habe nochmal überlegt wie ich das ganze Vereinfachen könnte. Ich würde das ganze reduzieren und nur 1x Nachts ausführen. Damit die Auswahl der Unterordner vereinfacht wird, würde ich die Ordnerstruktur mit einem Präfix versehen. Also zum Beispiel alle Unterordner die kopiert werden sollen mit einem B versehen. B01_Bilder B02_Planunterlagen usw... Dann könnte ich mit einem PowerShell Skript nach B??_ suchen. Dann kann er ja im Prinzip von Laufwerk M alle Ordner (Projekte_2020, Projekte_2019,...) kopieren und eben alle Unterordner die mit B??_ beginnen. Doch wie bringe ich das in mein Skript? Also die reine Auswahl zwecks den Unterordnern? Wäre euch für einen Tipp sehr dankbar. bearbeitet 16. April 2020 von noobi Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.