Постоянная повторная попытка возобновления загрузки с помощью curl


17

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

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

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

Ответы:


20

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

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

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

НТН,

Адам

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.