使用pureftpd我上传了1%的1276541542字节文件或大约15兆。然后我异常地杀死了网络连接,以模拟客户端被踢掉他们的ISP。然后我等了一个小时。然后我重新连接并发出APPE(append)命令并上传文件的其余部分。上传完成后服务器上文件的最终大小为1292326238,即比应该大约多15兆。损坏的文件。 FTP服务器有什么方法可以防止由于延迟附加而导致上传文件损坏?
答案 0 :(得分:1)
FTP服务器有什么方法可以防止由于延迟附加而导致上传文件损坏?
FTP服务器无法防止损坏的上传文件,因为服务器不知道该文件应该是什么。
但是服务器可以通过实现SIZE
命令帮助客户端正确上传。使用此命令,客户端可以确定服务器上的当前文件大小,从而确定应继续上载的文件中的位置。当然,这个逻辑必须在客户端实现。
答案 1 :(得分:0)
我有关于它的上传脚本的纯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客户端时.rb仍在运行。 (是的,我先删除了ddd.txt。)
因此,问题的答案是,由于FTP协议的限制,EVEN pureftpd无法解决这个问题。