使用curl下载ftp文件而不遍历父目录

时间:2016-01-15 18:37:20

标签: curl ftp

我想从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更改为最终目录而不是遍历层次结构,以避免它在不允许的父目录上出错?

1 个答案:

答案 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.

瞧!