使用 lftp 上传到 ftp 站点得到 501 磁盘不足 space

using lftp to upload to ftp site got 501 Insufficient disk space

我刚开始使用 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: Access failed: 501 Insufficient disk space : only 0 bytes available. (To dest_folder/myfile)

当我登录到他们的网站并查看时,上传了一个名为 myfile 的 0 字节文件。

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

登录该站点
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 insufficient disk space错误

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

您可以尝试使用 lftp -d 来启用 debug/verbose 模式。一些 FTP 客户端使用 ALLO FTP 命令,告诉 FTP 服务器提前 "allocate" 一些字节; FTP 服务器然后可以 accept/reject 那。我怀疑 lftp 正在向您的 FTP 服务器发送 ALLO,并且是 FTP 服务器使用 501 响应代码响应该 ALLO 命令,导致你的问题。

根据 updates/comments,OP 确认 lftpALLO 的使用确实导致了最初报告的行为。随后的错误发生是因为 lftp 试图更新上传文件的时间戳; FTP 服务器也拒绝了这些尝试。 lftp 曾尝试使用 MFMTSITE UTIME FTP 命令。

要禁用这些,并使 lftp 成功实现 OP,需要以下 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.

修改上传文件的服务器端时间戳

希望对您有所帮助!