我在Ubuntu 20.4上使用lftp 4.8.4和我自己的ftpd服务器代码。
如下面的调试日志所示,在准备传输时,lftp发送ALLO,但似乎忽略了否定响应(452"无空间"(。
我也试过一个552〃的;超过存储分配";回应,但也被忽略了。
是否有更合适的回应?我是否误解了ALLO的作用?
欢迎任何建议!谢谢
> put lfs.img -o lfs3
---- Connecting to ftpd (192.168.0.171) port 21
<--- 220 nil
---> FEAT
<--- 211-Extensions supported:
<--- SIZE
<--- REST STREAM
<--- PASV
<--- 211 END
---> USER anonymous
<--- 331 nil
---> PASS lftp@
<--- 230 nil
---> PWD
<--- 257 /
---> TYPE I
<--- 200 nil
---> PASV
<--- 227 Entering Passive Mode. 192,168,0,171,255,249
---- Connecting data socket to (192.168.0.171) port 65529
---- Data connection established
---> ALLO 72408
<--- 452 no space
---> STOR lfs3
<--- 500 open fail
---- Closing data socket
put: lfs.img: Fatal error: 500 open fail
lftp正确处理对ALLO命令的552响应("请求的文件操作中止。超出存储分配"(。lftp用STOR命令响应552响应,紧接着是ABOR(即Abort(命令。
根据RFC 959(第4.1.3段(:;此命令[ALLO]后面应跟STORe或APPEnd命令"因此,尽管STOR命令不会成功,但跳过它并只发送ABOR是不正确的。