У меня проблема на моем сервере: когда достигается квота папки и кто-то пытается загрузить файл, он не получает код ошибки и помещает файл размером 0 байт. Поэтому я хочу знать, есть ли какое-либо решение (например, проверка целостности), чтобы проверить, правильно ли передан файл.
На самом деле, нет. Лучшее, что вы могли сделать, это бежать sha1sum
через ssh для удаленного файла и посмотрите, соответствует ли он тому же хешу локального файла.
Другой инструмент, например scp
или rsync
может вернуть код ошибки при сбое передачи.
Есть конкретные Расширения протокола SFTP для вычисления хэшей файлов, и такие расширения поддерживаются большинством клиентов и серверов (это очень часто). См. Эту ссылку для получения полной документации по таким расширениям: https://tools.ietf.org/html/draft-ietf-secsh-filexfer-extensions-00#section-3
В любом случае, учитывая вышесказанное, я бы рекомендовал использовать SFTP-клиент, который поддерживает такие расширения, и вычислять хэш-код вашего файла как на клиенте, так и на сервере (после передачи) и проверять, совпадают ли они. Это самый безопасный способ достичь своей цели.
Протокол sFTP имеет встроенную проверку ошибок.
То, что клиент создает файл с нулевым байтом вместо сообщения пользователю об ошибке, может быть вызвано тремя причинами:
sftp имеет встроенную проверку целостности, поэтому я могу только предположить, что пользователь не заметил ошибки.
Сравните с md5sum контрольную сумму 2 файлов