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

7

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

Achraf
quelle

Antworten:

6

Nicht wirklich. Das Beste, was Sie tun können, ist, sha1sumüber ssh gegen die entfernte Datei zu laufen und zu prüfen, ob dies mit demselben Hash der lokalen Datei übereinstimmt.

Ein anderes Tool wie scpoder rsynckann bei einem Übertragungsfehler einen Fehlercode zurückgeben.

Ignacio Vazquez-Abrams
quelle
scp und rsync erlauben es, ssh-Dateiübertragung durchzuführen, aber ich muss es besonders mit sFTP tun
achraf
4

Es gibt spezielle SFTP-Protokollerweiterungen zum Berechnen von Datei-Hashes , und solche Erweiterungen werden von den meisten Clients und Servern unterstützt (dies ist sehr häufig). Unter diesem Link finden Sie eine vollständige Dokumentation solcher Erweiterungen: https://tools.ietf.org/html/draft-ietf-secsh-filexfer-extensions-00#section-3

In Anbetracht des oben Gesagten 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 überprüfen, ob sie identisch sind. Das ist der sicherste Weg, um Ihr Ziel zu erreichen.

FjodrSo
quelle
3

Das sFTP-Protokoll verfügt über eine integrierte Fehlerprüfung.
Dass der Client eine Null-Byte-Datei erstellt, anstatt dem Benutzer eine Fehlermeldung zu geben, kann auf drei Dinge zurückzuführen sein:

  1. Der Server gibt den Fehler nicht ordnungsgemäß an den Client zurück. (Ich habe gesehen, dass dies bei Kontingentproblemen der Fall ist ...) Wenn dies der Fall ist, können Sie nur überprüfen, ob die Datei übertragen wurde, indem Sie sie (vom Client) zurücklesen und mit der ursprünglichen Datei clientseitig vergleichen. (Ich gehe davon aus, dass Sie keine Änderungen auf der Serverseite vornehmen können.)
  2. Der Server gibt den Fehler zurück, aber das sFTP-Client-Programm behandelt dies nicht richtig. Holen Sie sich 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.
Tonny
quelle
0

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

David Houde
quelle
-1

Vergleichen Sie mit md5sum die Prüfsumme der beiden Dateien

DrFalk3n
quelle
@ignacio & @ drfalk3n: Ja, aber das Problem ist, dass ich die Prüfsumme nicht auf dem Produktionsserver ausführen kann. Gibt es eine Lösung für die Prüfung auf Client-Seite?
Achraf
@achraf: Warum kannst du nicht? Vor dem Hochladen durchführen. Dann nach dem Download.
Abatishchev