schauan
Goto Top

Problem nach kopieren auf Server

Hallo zusammen,

ich habe auf einigen Clients batch's laufen zum kopieren von Dateien. Diese werden von einem Programm am Ende der Ausführung erstellt und übertragen das Ergebnis der Arbeit im Programm auf einen Server. Dabei handelt es sich um ASCII-Dateien von <10 kb bis maximal etwa 500kb. Die Dateien werden einzeln erstellt und übertragen.

Auf dem Server werden die Dateien zeitgesteuert weiterverarbeitet.

Bisher habe ich im Programm ein ftp-script erstellt und durch die batch ausgeführt. Da lief alles ordentlich.

Kürzlich habe ich den Server als Netzlaufwerk auf den Clients angebunden und übertrage die Dateien per copy.

Seitdem passiert es ab und zu, dass mir der Server bei der Weiterverarbeitung Dateien ohne relevanten Inhalt meldet.

Läuft bim copy im Dateisystem etwas anders als beim ftp? Ich könnte mir vorstellen, dass die Datei "noch nicht komplett" auf dem Server liegt, wenn dieser mit der Weiterverarbeitung beginnen will. Vielleicht wird die Datei beim ftp irgendwie geblockt und beim copy nicht?

Falls das so ist, wie kann man so etwas beim copy blocken? Oder müsste ich mir eine Inhaltsliste vom Verzeichnis erstellen und die Daten zeitverzögert weiterverarbeiten?

Content-Key: 227286

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

Printed on: April 19, 2024 at 05:04 o'clock

Member: falscher-sperrstatus
falscher-sperrstatus Jan 21, 2014 at 16:07:35 (UTC)
Goto Top
Das kannst nur du beantworten. Wann ist das FTP Skript fertig? Wann das andere?

Mess es aus. Dann kannst du mehr sagen, wir müssten uns das genauso anschauen und analysieren und könnten dir auch dann erst mit mehr Infos als dem reinen Mutmaßen dienen.

LG
Member: Cthluhu
Cthluhu Jan 21, 2014 updated at 17:24:48 (UTC)
Goto Top
Hi,

Für das Problem, dass die Datei weiterverarbeitet wird, bevor sie komplett hochgeladen ist gibts eine einfache Lösung.
Am Client:
1) Datei Hochladen
2) kleine Kontrolldatei (kann auch leer sein) erstellen und hochladen

Am Server:
1) Skript nur dann anwerfen, wenn Kontrolldatei existiert (dann ist nämlich die wichtige Datei auf jeden Fall hochgeladen)
2) Nach der Abarbeitung Kontrolldatei löschen.

Der Hintergrund: Vermutlich hat dein ftp-script die Datei unter einen temporären Namen hochgeladen und erst auf den richtigen Namen geändert, als schon der gesamte Inhalt übertragen war. Copy legt vermutlich zuerst die Datei unter dem Zielnamen an und schreibt dann kontinuierlich drauf.

mfg

Cthluhu
Member: schauan
schauan Jan 27, 2014 at 14:24:25 (UTC)
Goto Top
Hallo zusammen,

danke erst mal für die Antworten. Die Weiterverarbeitung auf dem Server übernehmen ebenfalls Scripte. Ich habe das Probolem jetzt erst mal durch Einfügen einer Wartezeit von 5 Sekunden vor der Weiterverarbeitung in den Scripten von ca. 10 Dateien pro Tag auf ca. 2-3 Datei pro Tag reduziert. Jetzt teste ich gerade 8 Sekunden:

If Files.Count < 1 then wscript.quit
wscript.sleep 8000

Das mit der Kontrolldatei schau ich mir nochmal an. Ich hab zwischenzeitlich festgestellt, dass einige user die Dateien manuell kopieren face-sad - auch deswegen erst mal die Variante mit der Wartezeit.

Im ftp-Script habe ich keine temporären Dateinamen verwendet. Ob nun das ftp-Script oder besser gesagt der ftp-Prozess rein technisch gesehen während der Übertragung vielleicht einen temporären Namen verwendet oder wie auch immer auf dem Zielsystem anders mit den Daten umgeht als das copy, ist für mich die Frage.
Bisher habe ich zwar viel Hintergrundinformationen zum ftp im Netz gefunden, jedoch noch nicht die Stelle mit der Information, wann genau der Name der Datei im Filesystem des Servers weiterverwendbar auftaucht. Beim Copy habe ich den Eindruck, dass es am Anfang des Prozesses ist, und beim ftp vielleicht erst nach der erfolgreichen Übertragung?
Member: Cthluhu
Cthluhu Jan 27, 2014 at 15:20:57 (UTC)
Goto Top
Hi,

Das mit der Wartezeit würde ich nochmal überdenken. Du gehts davon aus, dass das vollständige Übertragen weniger als x Sekunden dauert. Wenn das Netzwerk/Internet mal Schluckauf hat kann es schon mal länger dauern bis die Dateien fertig werden. Dann ist die Wartezeit eventuell wieder zu kurz und du stehst vor dem selben Problem.

Ich denke nicht, dass im FTP-Protokoll festgelegt ist, wie die Datei am Zielsystem erzeugt wird. Am einfachst ist, du probiert es aus. Dazu würde ich größer Dateien verwenden, welche etwas länger brauchen zum Übertragen (sonst hast du eventuell zu wenig Zeit zum beobachten).

mfg

Cthluhu