18

Я пытаюсь использовать команду cURL для загрузки файла с FTP-сервера на локальный диск моего компьютера. я пробовал

curl " ftp://myftpsite " - имя пользователя: пароль -Q "CWD /users /myfolder /" -O "myfile.raw"

Но он возвращает ошибку, которая говорит:

curl: имя удаленного файла не имеет длины!
curl: попробуйте 'curl --help' или 'curl --manual' для получения дополнительной информации
curl: (6) Не удалось разрешить хост: myfile.raw; Нет записи данных запрошенного типа

Я пробовал некоторые другие методы, но, похоже, ничего не работает.

Кроме того, я не совсем уверен, как указать, в какую папку я хочу загрузить файл. Как бы я это сделал?

4 ответа4

24

Пытаться

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

В URL-адресах FTP путь указывается относительно начального каталога (обычно это ваш домашний каталог). Вам нужно указать абсолютный путь, а это значит использовать %2f для указания / . Это необходимо, потому что путь в ftp: URL обрабатывается как список имен, разделенных косой чертой, каждое из которых должно быть указано в отдельной команде CWD . %2f декодируется после разделения. См. RFC 1738 и URL-адреса FTP .

Что касается выходного местоположения, просто укажите путь к -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"

Я использую это все время. Отлично работает.

0

Пытаться:

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

(Если имя удаленного файла - «myfile.raw»)

0

Как подсказывает Ян,

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

должно работать, но некоторые FTP-серверы используют политики безопасности, которые не соответствуют стандартам. В этих случаях может помочь опция --ftp-method singlecwd или --ftp-method nocwd .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .