Frage Wie kann ich überprüfen, ob eine Datei bei der Verwendung von SFTP gut übertragen wurde?


Ich habe ein Problem auf meinem Server: Wenn die Ordnerquote erreicht ist und jemand versucht, eine Datei hochzuladen, erhält er keinen Fehlercode und legt eine 0-Byte-Datei ab. Ich möchte also wissen, ob es eine Lösung (Integritätsprüfung zum Beispiel) gibt, um zu überprüfen, ob die Datei gut übertragen wurde.


7
2018-05-11 09:37


Ursprung




Antworten:


Nicht wirklich. Das Beste, was du tun kannst, ist zu rennen sha1sum über ssh gegen die Remote-Datei und sehen, ob das gleiche Hash der lokalen Datei entspricht.

Ein anderes Werkzeug wie z scp oder rsync kann bei einem Übertragungsfehler einen Fehlercode zurückgeben.


6
2018-05-11 09:45



scp und rsync erlauben es, ssh-Dateitransfers durchzuführen, aber ich muss es speziell mit sFTP machen - achraf


Das sFTP-Protokoll hat eine Build-Fehler-Prüfung.
Dass der Client eine Nullbyte-Datei erstellt, anstatt dem Benutzer eine Fehlermeldung zu geben, kann auf 3 Dinge zurückzuführen sein:

  1. Der Server gibt den Fehler nicht ordnungsgemäß an den Client zurück. (Ich habe gesehen, dass das bei Kontingentproblemen passiert ...) Wenn dies der Fall ist, ist die einzige Möglichkeit zu überprüfen, ob die Datei OK übertragen wurde, sie zurückzulesen (vom Client) und mit der ursprünglichen Datei clientseitig zu vergleichen. (Ich gehe davon aus, dass Sie serverseitig keine Änderungen vornehmen können.)
  2. Der Server gibt den Fehler zurück, aber das sFTP-Client-Programm behandelt dies nicht ordnungsgemäß. Erhalten Sie einen anderen sFTP-Client. (Bitte beachten Sie, dass bei einigen Clients die Fehlerbehandlung deaktiviert werden kann. Überprüfen Sie die Einstellungen.)
  3. Der Client hat den Fehler behandelt, aber der Benutzer hat ihn einfach ignoriert: Informieren Sie Ihren Benutzer.

3
2018-04-13 10:35





Es gibt spezifische SFTP-Protokollerweiterungen zum Berechnen von Datei-Hashwertenund solche Erweiterungen werden von den meisten Clients und Servern unterstützt (es ist sehr üblich). Eine vollständige Dokumentation dieser Erweiterungen finden Sie unter diesem Link: https://tools.ietf.org/html/draft-ietf-secsh-filexfer-extensions-00#section-3

In Anbetracht der obigen Ausführungen würde ich empfehlen, einen SFTP-Client zu verwenden, der solche Erweiterungen unterstützt, und den Hash-Code Ihrer Datei sowohl auf dem Client als auch auf dem Server (nach der Übertragung) zu berechnen und zu prüfen, ob sie identisch sind. Das ist der sicherste Weg, um Ihr Ziel zu erreichen.


3
2017-10-15 16:53





sftp hat Integritätsprüfungen eingebaut, daher kann ich nur annehmen, dass der Benutzer den Fehler nicht bemerkt hat.


0
2018-04-13 08:59





Vergleichen Sie mit md5sum die Prüfsumme der 2 Dateien


-1
2018-05-11 09:56



@ignacio & @ drfalk3n: Ja, aber das Problem ist, dass ich die Prüfsumme auf dem Produktionsserver nicht ausführen kann. Gibt es eine Lösung, um die Überprüfung auf der Client-Seite durchzuführen? - achraf
@ Achraf: Warum kannst du nicht? Führen Sie vor dem Hochladen durch. Dann nach dem Download. - abatishchev