siggi92
Goto Top

SFTP-Verzeichnis: Zeitgesteuertes Verschieben anhand Dateiname in Unterordner

Hallo zusammen,

aktuell werden bei uns in einem SFTP-Verzeichnis mehrere Ordner mit Dateien automatisch (extern) angereichert.

Diese Dateien sind nach folgender Syntax benahmt: Kürzel_Abteilung_Datum_bli_bla_blupp.Dateiendung

Pro Ordner liegen darin tausende von Dateien.

Wunschvorstellung:

Script das automatisch nachts aus dem SFTP_Verzeichnis in den Ordnern alle Dateien anhand des Abteilungsnamens in Unterordner verschiebt und anschließend ein Log erstellt was wann wohin verschoben wurde.

Bsp.

/sftp_verzeichnis
/Firma1
/AbteilungA
/AbteilungB
usw.
/Firma2
/AbteilungC
/AbteilungD
usw.


Konnte ich das Wunschszenario klar schildern?
Womit wickeln ich das Verschieben anhand des Abteilungsnamen am einfachsten ab? Powershell?
Wie bekommt man das automatisiert hin? Cronjob?
-->Gibt es Tools die das "einfach" abwickeln?

Sofern es schon einen vergleichbaren Thread (SFTP+zeitgesteuertes Verschieben) gibt den ich nicht gefunden habe, gerne den Link! face-smile


VG
Siggi

Content-Key: 319622

Url: https://administrator.de/contentid/319622

Printed on: April 24, 2024 at 06:04 o'clock

Mitglied: 131339
131339 Oct 31, 2016 updated at 09:23:27 (UTC)
Goto Top
Hi,
würde ich mit einem Bash-Script per Cron regelmäßig direkt auf dem SFTP-Server ausführen lassen.

Noch besser: Die Anwendungen schieben ihre Daten selbst direkt ins richtige Verzeichnis, wenn sie doch schon den Abteilungsnamen in den Namen schreiben haben sie ja schon die Information dafür.

Für ein Wunschscript nach Maß kannst du mich für ein Angebot gerne Anschreiben.

Gruß Schluckauf
Member: Siggi92
Siggi92 Oct 31, 2016 at 10:09:06 (UTC)
Goto Top
Die externe Anwendung die diese Files generiert ist leider nicht für uns anpassbar.


Ich habe mir deshalb jetzt mal eine "Testumgebung" eingerichtet und würde mich gerne Schrittweise an das Script herantasten:

SFTP-Verzeichnis mit einem Ordner "Firma" und einem Unterordner "Firma01"

darin enthalten eine Datei "TT_Verwaltung_10312016_MM_KK.txt" und eine Datei "ZZZ_Website_10312016_LL_NN.txt".

Wie würde das Script aussehen um den Unterordner "Firma01" nach allen Dateien die mit "TT_Verwaltung..." anfangen zu durchsuchen

und in einen Unterordner von "Firma01" mit dem Namen "Verwaltung" zu verschieben?
Mitglied: 131339
131339 Oct 31, 2016, updated at Nov 01, 2016 at 17:55:08 (UTC)
Goto Top
Du machtst eine Schleife über die Dateien im Ordner und dann splittest du den Dateinamen anhand der "_" (cut -d '_' -f2) und mit dem Ergebnis erstellst du den Ordner und verschiebst die Datei (mv) da rein, fertig.

Also in Bash bspw. so:
for f in /Firma/Firma01/*.* ;do
     foldername="${f%/*}/$(Basename "$f" | cut -d'_' -f2)"  
     [[ ! -d "$foldername" ]] && mkdir "$foldername"  
     echo "Moving $f to $foldername"  
     mv "$f" "$foldername"  
done
Member: Siggi92
Siggi92 Nov 01, 2016 at 15:35:55 (UTC)
Goto Top
Vielen Dank Schluckauf! face-smile

Zwischenstand meines ersten Tests (wie gesagt steige erst in das Thema ein):

Habe das jetzt mal 1:1 als "test.ps1" abgespeichert und

1. "Mit Powershell ausführen" gestartet

2. über die Eingabeaufforderung wie folgt anzusteuern:

powershell.exe -ExecutionPolicy RemoteSigned -File "C:\...\test.ps1

Ergebnis in beiden Fällen:

Fehlende öffnende "(" nach dem Schlüsselwort "for".
Bei Öffnen C:\...\test.ps1:1 Zeichen:5

back-to-topfor <<<< f in /Firma/Firma01/*.*+; do

+CategoryInfo : ParserError: (OpenParenTocken:TokenId) , Parent ContainsErrorRecordException
+FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword
Mitglied: 131339
131339 Nov 01, 2016, updated at Nov 02, 2016 at 07:57:52 (UTC)
Goto Top
Nee, Nee, Nee *... Das ist ein Bash-Script das auf dem Linux-Server augeführt wird, kein Powershell... das sieht doch ein Blinder mit Krückstock aus 100m Entfernung!

Sowas als PS auf einem Client laufen zu lassen wäre ja sowieso ineffizient hoch drei, gerade bei so vielen Dateien.
Member: Endoro
Endoro Nov 03, 2016 at 08:20:01 (UTC)
Goto Top
Hey,
In welchem System befinden wir uns eigentlich? Linux oder Windows?
Gruß, Endoro