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

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: falscher-sperrstatus
falscher-sperrstatus 21.01.2014 um 17:07:35 Uhr
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
Mitglied: Cthluhu
Cthluhu 21.01.2014 aktualisiert um 18:24:48 Uhr
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
Mitglied: schauan
schauan 27.01.2014 um 15:24:25 Uhr
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?
Mitglied: Cthluhu
Cthluhu 27.01.2014 um 16:20:57 Uhr
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