I have an issue on my server: when folder quota is reached and someone tries to upload a file, he doesn't get any error code and he deposits a 0 bytes file. So I want to know if there's any solution (integrity check for example) to check if the file is well transferred.
5 Answers
Not really. The best you could do is run sha1sum
via ssh against the remote file and see if that matches the same hash of the local file.
A different tool such as scp
or rsync
may return an error code on transfer failure.

- 45,939
- 6
- 79
- 84
-
scp and rsync allow to perform ssh file transfert but i specially need to do it using sFTP – achraf May 11 '10 at 12:56
There are specific SFTP protocol extensions to calculate file hashes, and such extensions are supported by most clients and servers (it's very common). See this link for full documentation of such extensions: https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-extensions-00#section-3
Anyway, given the above, I would recommend to use a SFTP client that supports such extensions and calculate the hash code of your file both on the client and the server (after transfer) and check if they're the same. That's the safest way to accomplish your goal.
sFTP protocol has buildin error checking.
That the client creates a zero-byte file in stead of given the user an error message can be due to 3 things:
- The server doesn't return the error properly to the client. (I've seen that happen with quota issues...) If that is the case the only way to verify that the file was transferred OK is to read it back (by the client) and compare to the original file client-side. (I'm assuming you can't make changes server-side.)
- The server returns the error, but the sFTP client program doesn't handle this properly. Get a different sFTP client. (Please note that in some clients error-handling can be disabled. Check the settings.)
- The client did handle the error but the user simply ignored it: Educate your user.

- 6,332
- 1
- 18
- 31
sftp has built in integrity checks, so I can only assume the user did not notice the error.

- 3,200
- 1
- 16
- 19
Compare with md5sum the checksum of the 2 files

- 99
- 2
-
@ignacio & @drfalk3n : yes but the problem is that i cant perform the checksum on production server. is there any solution to do the check on client side ? – achraf May 11 '10 at 12:08
-
@achraf: Why can't you? Perform before upload. Then after download. – abatishchev Nov 24 '13 at 21:32
-