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.
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://tools.ietf.org/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.