我正在尝试使用 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 1738和FTP URL。
至于输出位置,只需给出路径即可-o
。
安全建议:
不要将密码放在 URL 中。将其存储在 中
~/.netrc
也不是特别安全,但至少可以隐藏起来ps -ef
。您的密码将以明文形式发送。如果服务器支持,请使用
curl --ssl-reqd
或curl 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 服务器使用的安全策略不符合标准。在这些情况下,--ftp-method singlecwd
或--ftp-method nocwd
选项可能会有所帮助。