0

使用 pureftpd 我上传了 1% 的 1276541542 字节文件或大约 15 兆。然后我异常终止了网络连接以模拟客户端被踢出他们的 ISP。然后我等了一个小时。然后我重新连接并发出了一个APPE(追加)命令并上传了文件的其余部分。上传完成后服务器上文件的最终大小为 1292326238。即比应有的多 15 兆。损坏的文件。FTP服务器防止由于延迟附加而损坏的上传文件的正确方法是什么?

4

2 回答 2

1

FTP服务器防止由于延迟附加而损坏的上传文件的正确方法是什么?

FTP 服务器无法防止损坏的上传文件,因为服务器不知道文件应该是什么。

但是服务器可以通过执行SIZE命令来帮助客户端进行正确的上传。使用此命令,客户端可以确定服务器上的当前文件大小,从而确定文件中应继续上传的位置。当然,这个逻辑必须在客户端实现。

于 2016-04-06T05:03:09.353 回答
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 客户端时,done.rb 仍然运行。(是的,我先删除了 ddd.txt。)

因此,问题的答案是,由于 FTP 协议的限制,即使 pureftpd 也无法处理。

于 2016-04-06T17:45:22.420 回答