使用 cURL 从 FTP 下载文件

使用 cURL 从 FTP 下载文件

我正在尝试使用 cURL 命令将文件从 FTP 服务器下载到我的计算机上的本地驱动器。我尝试过

卷曲ftp://我的 ftp 站点“ --用户名:密码 -Q "CWD /users/myfolder/" -O "myfile.raw"

但它返回一个错误:

curl:远程文件名没有长度!
curl:尝试“curl --help”或“curl --manual”获取更多信息
curl:(6)无法解析主机:myfile.raw;没有请求类型的数据记录

我尝试了一些其他方法,但似乎没有什么作用。

另外,我不太清楚如何指定要将文件下载到哪个文件夹。我该怎么做?

答案1

尝试

curl -u user:password 'ftp://mysite/%2fusers/myfolder/myfile/raw' -o ~/Downloads/myfile.raw

在 FTP URL 中,路径是相对于起始目录(通常是您的主目录)的。您需要指定绝对路径,这意味着使用 来%2f指定/。这是必要的,因为 URL 中的路径ftp:被视为以斜线分隔的名称列表,每个都应该被赋予一个单独的CWD命令。%2f解码分裂。参见RFC 1738FTP URL

至于输出位置,只需给出路径即可-o


安全建议:

  • 不要将密码放在 URL 中。将其存储在 中~/.netrc也不是特别安全,但至少可以隐藏起来ps -ef

  • 您的密码将以明文形式发送。如果服务器支持,请使用curl --ssl-reqdcurl ftps://mysite/...

  • 使用 SFTP(SSH 文件传输协议)会更好。

答案2

curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"

我一直都在用这个。效果非常好。

答案3

尝试:

curl "ftp://user:password@myftpsite/users/myfolder/myfile.raw"

(如果远程文件名是“myfile.raw”)

答案4

正如 Yan 所建议的,

卷曲ftp://用户:密码@myftpsite/users/myfolder/myfile.raw

应该可以工作,但有些 FTP 服务器使用的安全策略不符合标准。在这些情况下,--ftp-method singlecwd--ftp-method nocwd选项可能会有所帮助。

相关内容