Какой правильный способ для FTP-сервера предотвратить повреждение загруженных файлов из-за позднего добавления?

Используя pureftpd, я загрузил 1% файла байта 1276541542 или около 15 мегабайт. Затем я ненормально прервал сетевое соединение, чтобы симулировать, как клиента выгнали из Интернета. Затем я ждал час. Затем я снова подключился и выполнил команду APPE (добавление) и загрузил оставшуюся часть файла. Окончательный размер файла на сервере после завершения загрузки составил 1292326238, т.е. примерно на 15 мегабайт БОЛЬШЕ, чем должно быть. Поврежденный файл. Какой правильный способ для FTP-сервера предотвратить повреждение загруженных файлов из-за позднего добавления?

2 ответа

Какой правильный способ для FTP-сервера предотвратить повреждение загруженных файлов из-за позднего добавления?

FTP-сервер не может предотвратить повреждение поврежденных загруженных файлов, поскольку сервер не знает, каким должен быть файл.

Но сервер может помочь клиенту сделать правильную загрузку, реализовав SIZE команда. С помощью этой команды клиент может определить текущий размер файла на сервере и, таким образом, позицию в файле, где следует продолжить загрузку. Конечно, эта логика должна быть реализована на клиенте.

У меня есть чистые ftpd ответы о загрузке скрипта

я бегу pure-uploadscript --run /home/aa/done.rb —daemonize

и моя программа done.rb

#!/usr/bin/env ruby
puts "done"
f=File.open("/home/aa/ddd.txt", "w")
f << "test"
f.close

и когда я бегу pure-ftpd —uploadscript и загрузите файл, конечно же, программа done.rb запущена.

(Я знаю, что он запускается, потому что есть новый файл с именем ddd.txt)

НО, когда я загружаю большой файл и убиваю ftp-клиент в середине загрузки, готово. (Да, я сначала удалил ddd.txt.)

Таким образом, ответ на этот вопрос таков: EVEN pureftpd не может справиться с этим из-за ограничений протокола FTP.

Другие вопросы по тегам