使用cURL从FTP下载文件


17

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

卷曲“ FTP:// myftpsite “--user name:password -Q”CWD / users / myfolder /“ - O”myfile.raw“

但它返回一个错误,说:

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

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

此外,我不太确定如何指定我希望将文件下载到哪个文件夹。我该怎么办?

Answers:


24

尝试

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

在FTP URL中,路径相对于起始目录(通常是homedir)。您需要指定绝对路径,这意味着使用 %2f 指定 /。这是必需的,因为路径在 ftp: 网址被视为 斜杠分隔名称列表 ,每一个应该分别给予 CWD 命令。该 %2f 被解码 分裂。看到 RFC 1738 FTP URL

至于输出位置,只需给出一个路径 -o


安全建议:

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

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

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


工作得很好。不太确定我完全理解%2f是如何使用的,因为你也使用/,但是嘿它有效,所以我不会抱怨。谢谢您的帮助!
Josiah

1
@Josiah:似乎URL“路径”被拆分了 /,每个参数都发送一个 CWD 命令: %2fusers/myfolderCWD /usersCWD myfolder。看到 RFC 1738 关于这个话题。
grawity

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

我经常用这个。它就像一个魅力。


我是第一个注意到这个答案错误的人吗? -T参数表示“文件上传”,而OP要求“文件下载”
Kar.ma

0

尝试:

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

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


当我尝试时,我收到以下错误:“curl:(9)服务器拒绝您更改到给定目录”。我相信这就是为什么我需要使用-Q“CWD”命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.