Ein FTP-Client kann einen put-Befehl annehmen, lange bevor der Server die Datei erhalten hat, und genau in der Lücke zwischen diesen beiden Ereignissen liegen die meisten Upload-Rätsel. Vier Stufen müssen abgeschlossen werden: Die lokale Datei wird gelesen, der Server nimmt die Speicheranforderung an, die Datenverbindung überträgt die Bytes, und die Übertragung erreicht eine abschließende positive Antwort. Die Stufen zu vergleichen ist nützlicher als Clients zu vergleichen, denn ein funktionierender Login und ein auftauchender Dateiname enden beide vor dem Ziel.

Vorläufige Antwort gegen endgültige Antwort

Bei STOR ist eine Antwort 125 oder 150 vorläufig. Sie sagt, dass der Server bereit ist, es zu versuchen, und dass eine Datenverbindung geöffnet wird, nicht dass das Objekt in seiner endgültigen Form existiert. Der Vorgang ist erst abgeschlossen, wenn die Übertragung eine positive Abschlussantwort erreicht, üblicherweise 226 oder 250, im Kontext dieses Vorgangs.

Eine 426 bedeutet, dass die Übertragung abgebrochen wurde, und eine von einem anderen Befehl ausgegebene Zahl ist nicht das Ergebnis dieses Uploads. Lies die Antwort, die zum STOR gehört, nicht die letzte Zahl auf dem Bildschirm. Beendet sich der Client, bevor diese Antwort eintrifft, hast du gar keinen Abschlussnachweis.

Steuerverbindung gegen Datenverbindung

Anmeldung und Verzeichnisliste nutzen die Steuerverbindung. Die Bytes nutzen eine separate Datenverbindung, deren Endpunkt pro Übertragung ausgehandelt wird. Ein erfolgreicher Login beweist den Steuerpfad und sagt nichts darüber, ob die Datenadresse vom Client aus erreichbar ist.

Wenn der Server die Datenverbindung nicht öffnen kann, untersuche den ausgehandelten Endpunkt und den erlaubten Pfad. Der passive Modus benötigt weiterhin eine nutzbare Datenadresse und einen Port, und eine Firewall oder ein NAT-Gerät zwischen Client und Server kann die Steuersitzung zulassen, während es den Datenbereich blockiert. Weist der Server stattdessen die Speicheranforderung ab, prüfe den entfernten Pfadnamen, die Berechtigungen oder Speichergrenzen. Keiner der beiden Zweige wird dadurch erklärt, dass die Steuerverbindung authentifiziert wurde.

FTP über TLS gegen SFTP

FTP über TLS ist weiterhin FTP: zwei Verbindungen, FTP-Antworten und eine TLS-Aufwertung auf jeder. SFTP ist ein SSH-Subsystem mit einer einzigen Verbindung und einem völlig anderen Befehlssatz. Sie teilen einen Zweck und fast nichts sonst, daher beginnt eine Diagnose, die zwischen ihnen wechselt, meist mit dem Vergleich der falschen Protokolle.

Deaktiviere TLS nicht, damit ein zwischengeschalteter Helfer die Sitzung einsehen kann, und behandle einen SFTP-Fehler nicht als FTP-Antwortproblem. Das curl-Handbuch dokumentiert explizites TLS, passiven Modus und Upload-Optionen, falls du einen skriptgesteuerten Test brauchst, und es ist die Referenz dafür, was jedes Flag tatsächlich ändert.

Wähle das Protokoll, das der Dienst tatsächlich anbietet, bevor du ihn debugst. Ein Server, der nur SFTP spricht, wird niemals eine 226-Antwort liefern, egal wie der Client konfiguriert ist.

Ein sichtbarer Dateiname gegen ein gespeichertes Objekt

Ein sichtbarer Dateiname kann ein unvollständiges Objekt darstellen, besonders nach einer abgebrochenen Übertragung oder einem Client, der zu früh beendet wurde. Bitte den Betreiber des Dienstes, die Größe der vorgesehenen Testdatei und den vertrauenswürdigen Inhalts-Hash mit dem gespeicherten Objekt zu vergleichen, wenn Byte-Erhaltung erwartet wird.

Binär- und ASCII-Modus sind ein weiterer Vergleich, der das Ergebnis verändert. Der ASCII-Modus kann Zeilenenden übersetzen, sodass die gespeicherten Bytes von der lokalen Datei abweichen, obwohl die Übertragung gelungen ist. Behalte den Binärmodus für eine Byte-für-Byte-Prüfung und füge keine Konvertierungsoptionen hinzu, damit eine fehlgeschlagene Übertragung anders aussieht.

Ein gewöhnliches STOR kann eine vorhandene Datei ersetzen, und die Berechtigung, sich anzumelden oder ein Verzeichnis aufzulisten, begründet keine Berechtigung, darin ein Objekt zu erstellen oder zu ersetzen. Verwende für den Test einen zuvor unbenutzten entfernten Namen.

Was vor einem neuen Versuch zu vergleichen ist

Hänge nicht blind an, setze nicht fort und wiederhole keinen Upload über eine unsichere Teil-Datei. Kläre mit dem Betreiber, ob ihr unter einem neuen Namen neu startet, das unterstützte Wiederherstellungsverfahren des Dienstes nutzt oder das fehlgeschlagene Testobjekt entfernst.

Schreibe das Ergebnis als eine von vier Aussagen: Das lokale Lesen schlug fehl, die Speicherung wurde verweigert, die Datenübertragung wurde abgebrochen, oder die Übertragung wurde abgeschlossen und die gespeicherten Bytes stimmten überein. Dieser Nachweis ist ein stärkeres Ergebnis, als Shell, VPN und FTP-Einstellungen gleichzeitig zu ändern, bis ein Dateiname erscheint, und er sagt der nächsten Person, welche Stufe zu prüfen ist. Bewahre den bereinigten Antworttext zusammen mit dieser Aussage auf. Dann ist ein neuer Versuch eine Entscheidung, kein Reflex.

Ähnliche Artikel