2016-01-15 3 views
0

Я хотел бы загрузить файлы с ftp-сервера. Я подтвердил, что у меня есть доступ, так как я могу загрузить файлы вручную с помощью Chrome, чтобы перечислить содержимое каталога ftp и щелкнуть по каждому файлу, загружая их по одному. Однако есть много файлов, и я бы хотел использовать завиток, чтобы схватить их за меня.Загрузить 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 

есть ли способ, что я могу иметь завиток изменения непосредственно к конечному каталогу, а не ходить по иерархии, чтобы избежать его дает ошибку на disall родительские каталоги?

ответ

2

Да, вы можете. Curl работает, разбивая путь на каждый символ /, затем выдавая команду PWD по одному (как вы можете видеть из подробного вывода).

Просто UrlEncode ваших промежуточных / символов с %2f и локоном будет выдавать команду CWD все сразу:

$ curl -u username:password "ftp://example.com/Parent%2fChild/file.txt" -o file.txt 

> CWD Parent/Child 
< 250 CWD command successful. 

вуаля!