17

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

Я знаю, что могу сделать это с помощью wget, но, к сожалению, Mac OS X не поставляется с wget. Я мог бы установить его, но чтобы сделать это (если я что-то пропустил), мне нужно сначала установить XCode и MacPorts, чего я бы хотел избежать.

Керл доступен, хотя кажется, но я не знаю, как это работает и как его использовать на самом деле. Если у меня есть список файлов в текстовом файле (один полный путь на строку, например, ftp://user:pass @ server/dir/file1), как я могу использовать curl для загрузки всех этих файлов? И можно мне завиться, чтобы никогда не сдаваться? Мол, повторять бесконечно и возобновлять загрузку с того места, где он остановился, и все такое?

2 ответа2

19

После того, как гуглил и читал какое-то время, я нашел решение, которое сработало для меня:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] заставит загрузить 30 файлов с именами file01.ext, file02.ext и так далее
  • --user user:pass должен быть очевидным
  • -O для вывода в файлы с оригинальным именем
  • --retry 999 , чтобы повторить 999 раз
  • --retry-max-time 0 чтобы предотвратить время ожидания повторных попыток. Поведение по умолчанию, если вы не укажете фиксированную задержку --retry-delay, заключается в том, что сначала нужно переждать одну секунду между повторными попытками, а затем удвоить это, пока оно не достигнет 10 мин. между попытками
  • -C - сделать так, чтобы оно продолжалось там, где оно было сброшено (если вы снова запустите команду). Тире потом говорит ему, чтобы выяснить, откуда продолжить

Если кто-то знает, как получить имена файлов из файла, пожалуйста, дайте мне знать.


На странице руководства это говорит следующее:

--url <URL>
Укажите URL для получения. Эта опция в основном удобна, когда вы хотите указать URL-адреса в конфигурационном файле.

Кажется, что это может быть что-то, но не совсем понимаю, как это будет использоваться ...

2

Вы можете использовать опцию -K, чтобы свернуться, чтобы указать файл конфигурации. В этом случае вы используете синтаксис:

optionname=<value>

Если у вас есть файл, содержащий список URL, вы можете использовать curl следующим образом:

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

который преобразует список URL, например:

http://host1.com/foo.html
http://host2.com/bar.html

в такой формат:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Керл читает это и интерпретирует каждый из этих вариантов.

НТН,

Адам

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