我想从ftp服务器下载文件。我已经确认我可以访问,因为我可以使用Chrome手动下载文件以列出ftp目录内容并单击每个文件,一次下载一个。但是,有很多文件,我想使用curl为我抓住它们。
但是,设置了ftp服务器,以便我无法访问Parent
目录,即使我有权访问Child
目录,因此下面的curl
命令失败:
curl -u username:password "ftp://example.com/Parent/Child/file.txt" -o file.txt
详细(-v
)输出的主要摘录:
< 230 User logged in.
> PWD
* Entry path is '/'
> CWD Parent
< 550 Access is denied
* Server denied you to change to the given directory
curl: (9) Server denied you to change to the given directory
有没有办法可以直接将curl更改为最终目录而不是遍历层次结构,以避免它在不允许的父目录上出错?
答案 0 :(得分:2)
是的,你可以。 Curl的工作原理是在每个/
字符上拆分路径,然后一次发出一个PWD
命令(正如您从详细输出中看到的那样)。
只需使用/
对您的中级%2f
字符进行urlencode,curl将同时发出CWD
命令:
$ curl -u username:password "ftp://example.com/Parent%2fChild/file.txt" -o file.txt
> CWD Parent/Child
< 250 CWD command successful.
瞧!