Назад | Перейти на главную страницу

Как я могу проверить, правильно ли передается файл при использовании SFTP?

У меня проблема на моем сервере: когда достигается квота папки и кто-то пытается загрузить файл, он не получает код ошибки и помещает файл размером 0 байт. Поэтому я хочу знать, есть ли какое-либо решение (например, проверка целостности), чтобы проверить, правильно ли передан файл.

На самом деле, нет. Лучшее, что вы могли сделать, это бежать sha1sum через ssh для удаленного файла и посмотрите, соответствует ли он тому же хешу локального файла.

Другой инструмент, например scp или rsync может вернуть код ошибки при сбое передачи.

Есть конкретные Расширения протокола SFTP для вычисления хэшей файлов, и такие расширения поддерживаются большинством клиентов и серверов (это очень часто). См. Эту ссылку для получения полной документации по таким расширениям: https://tools.ietf.org/html/draft-ietf-secsh-filexfer-extensions-00#section-3

В любом случае, учитывая вышесказанное, я бы рекомендовал использовать SFTP-клиент, который поддерживает такие расширения, и вычислять хэш-код вашего файла как на клиенте, так и на сервере (после передачи) и проверять, совпадают ли они. Это самый безопасный способ достичь своей цели.

Протокол sFTP имеет встроенную проверку ошибок.
То, что клиент создает файл с нулевым байтом вместо сообщения пользователю об ошибке, может быть вызвано тремя причинами:

  1. Сервер не возвращает клиенту ошибку. (Я видел, что это происходит с проблемами квот ...) Если это так, единственный способ убедиться, что файл был передан нормально, - это прочитать его (клиентом) и сравнить с исходным файлом на стороне клиента. (Я предполагаю, что вы не можете вносить изменения на стороне сервера.)
  2. Сервер возвращает ошибку, но клиентская программа sFTP не обрабатывает ее должным образом. Получите другой клиент sFTP. (Обратите внимание, что в некоторых клиентах обработка ошибок может быть отключена. Проверьте настройки.)
  3. Клиент обработал ошибку, но пользователь ее просто проигнорировал: обучите своего пользователя.

sftp имеет встроенную проверку целостности, поэтому я могу только предположить, что пользователь не заметил ошибки.

Сравните с md5sum контрольную сумму 2 файлов