0

我是使用 ftp 的新手,最近我遇到了这种真正有线的情况。

我试图将文件上传到其他人的 ftp 站点,我尝试使用此命令

lftp -e "set ftp:passive-mode true; put /dir/to/myfile -o dest_folder/`basename /dir/to/myfile`; bye" ftp://userName:passWord@ftp.site.com

但我得到了错误

put:访问失败:501 磁盘空间不足:只有 0 字节可用。(到 dest_folder/myfile)

当我登录他们的网站并检查时,上传了一个带有 myfile 名称的 0 字节文件。

起初我以为 ftp 站点的磁盘空间不足,但后来我尝试使用

lftp userName:passWord@ftp.site.com

然后设置被动模式

set ftp:passive-mode true

然后上传文件(使用另一个名称)

put /dir/to/myfile_1 -o dest_folder/`basename /dir/to/myfile_1`

这次文件上传成功,没有出现501磁盘空间不足的错误。

有谁知道为什么会这样?谢谢!

4

1 回答 1

0

您可以尝试使用lftp -d, 来启用调试/详细模式。一些 FTP 客户端使用ALLOFTP 命令,告诉 FTP 服务器提前“分配”一些字节;然后 FTP 服务器可以接受/拒绝它。我怀疑这lftp是发送ALLO到您的 FTP 服务器,它是 FTP 服务器以ALLO501 响应代码响应该命令,导致您的问题。

根据更新/评论,OP 确认lftp' 的使用ALLO确实导致了最初报告的行为。lftp由于试图更新上传文件的时间戳而发生后续错误;这些尝试也被 FTP 服务器拒绝。 lftp曾尝试使用MFMTSITE UTIMEFTP 命令。

要禁用这些并让lftpOP 成功,需要以下lftp设置:

ftp:trust-feat no
ftp:use-allo no
ftp:use-feat no
ftp:use-site-utime no
ftp:use-site-utime2 no

使用这些设置,您应该能够在使用命令的情况下lftp上传文件,并且无需尝试使用或修改上传文件的服务器端时间戳。ALLO MFMTSITE UTIME

希望这可以帮助!

于 2016-03-19T00:16:11.350 回答