Verhindert, dass beim Hochladen auf die Datei zugegriffen wird

6

Wenn ich eine große Datei auf einen FTP-Server hochladen würde, wird diese Datei sofort im Zieldateisystem angezeigt und kann möglicherweise eine andere Partei auf sie zugreifen, bevor die Übertragung abgeschlossen ist?

Wenn ja, wie können Sie verhindern, dass die Datei gelesen wird, bis die Übertragung abgeschlossen ist?

Yogi Bär
quelle
Mögliches Duplikat der angeforderten Webseite beim Hochladen von Dateien über FTP
ƬᴇcƬᴇιʜ007
@ Techie007, dieser Vorgang kann anders sein, wenn ein HTTP-Server anstelle eines zweiten FTP-Aufrufs zum Abrufen der Datei verwendet wird. Wenn sich die Operation also nicht speziell um HTTP kümmert, gibt es technische Unterschiede im Ergebnis.
Frank Thomas

Antworten:

3

Dies hängt vollständig vom Verhalten der jeweiligen Serverimplementierung ab und ist in RFC959 nicht vollständig definiert .

Im Allgemeinen ist eine Datei auf dem Server erst dann verfügbar, wenn beim Hochladen eine 226 zurückgegeben wurde und der Status 150 lautet. Wenn die Datei noch nicht vollständig hochgeladen wurde, lautet die Statusantwort nicht 550 und die Datei wird nicht übertragen an den Client.

Zu diesem Zweck weiß das STOU-Verb, dass ein Datei-Upload abgeschlossen ist, wenn das EOF-Byte eintrifft. Zu diesem Zeitpunkt wurde also die gesamte Datei hochgeladen, und es wird 226 zurückgegeben.

Das RECV- Verb gibt zuerst den Status der angeforderten Datei zurück. Eine Antwort von 150 wird erwartet, wenn sich die Datei in einem akzeptablen Status befindet. Anschließend wird die Übertragung gestartet.

Beachten Sie außerdem, dass die meisten Serverdienste als Multithread-Anwendungen implementiert sind und die Thread-Sicherheit für Dateien in der Regel vom Dateisystem und den Sperren des Server-Betriebssystems für die Dateien abhängt. Auf den meisten Plattformen können andere Threads beim aktiven Schreiben einer Datei diese Datei weder lesen noch schreiben, bis die Sperre aufgehoben wird.

Frank Thomas
quelle
3

Theoretisch kann der FTP-Server den Zugriff auf die hochgeladene Datei durch andere Prozesse oder andere FTP-Verbindungen verhindern.

In der Praxis ist dies auf * nix-Servern nicht der Fall. Ich habe dies auf CentOS mit PureFTPD und ProFTPD (den am häufigsten verwendeten * nix FTP-Servern) getestet. Bei beiden Servern hindert Sie nichts daran, eine unvollständige Datei herunterzuladen.

Auf der anderen Seite sperrt der Windows IIS-FTP-Server die hochgeladene Datei. Getestet unter IIS 6.2 (Windows 8.1).

Eine Problemumgehung finden Sie unter Meine Antwort auf FileZilla-Uploads sind nicht atomar .

Martin Prikryl
quelle
2

Wenn Ihr FTP-Server eine ähnliche Funktion wie die Hidden Stores von ProFTPD zulässt, sollten Sie dies ausprobieren.

Die HiddenStores-Direktive ermöglicht das Hochladen von Dateien in zwei Schritten: Dateien werden als ".in.filename" hochgeladen. und sobald der Upload abgeschlossen ist, wird er in "Dateiname" umbenannt. Dies sorgt für einen gewissen Grad an Atomizität und verhindert, dass 1) unvollständige Uploads und 2) Dateien verwendet werden, während sie noch hochgeladen werden.

Quelle: http://www.proftpd.org/docs/directives/linked/config_ref_HiddenStores.html

Prathamesh Gharat
quelle
Kann ich feststellen, ob ein Remote-FTP-Server (in meinem Fall bluehost) HiddenStores unterstützt?
Isaacw