Dolbanowsky
@Dolbanowsky
Поэт-программист

Почему linux сервер при передаче файлов по sftp сохраняет не все файлы?

При помощи python paramiko загружаю с вин 10 машины на Debian 10 сервер 405 файлов (изображения), в лог paramiko пишет что каждый файл transport file 100%. Но по факту в папке на сервере 350 файлов изображений.

На локальной машине, те файлы что пропадают на сервере, открываются, то есть не битые, в именах файлов спецсимволов нет(латиница, тире точка), размер не нулевой.

Вопрос. Почему paramiko пишет что файл передал, а по факту файлов одних и тех же нет, сколько не передавай?
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
mayton2019 абсолютно прав, скорее всего python приложение игнорирует ошибки.
Если у тебя sftp то включи логи и сравни их с логами твоего python приложения.

Посмотри внимательно на имена файлов, которые не скопировались, что в их именах необычного, к примеру если клиент у тебя linux а сервер у тебя windows (или vfat файловая система) то файлы с одинаковыми именами но разным буквами строчные/прописные будут считаться одним и тем же файлом и перезаписываться.

Если в именах есть пробелы, то многие программисты забывают заключать файлы в двойные ковычки или экранировать опасные символы символом "\", в этом случае, если для отправки используется вызов приложения, происходит ошибка, файл не находится и не копируется. Еще в такой схеме проблемы создают файлы, имена которых начинаются на "-", если такой файл передавать в аргументы приложению относительным путем он будет распозноваться как параметр (я видел такое поведение у convert imagemagic даже с обрамление в ковычки, спасался добавлением ./ в начала имени файла).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы