Постійні спроби відновлення завантажень із завитком


17

Я на Mac і маю список файлів, які я хотів би завантажити з ftp-сервера. З'єднання трохи помийне, тому я хочу, щоб він повторився та відновився, якщо з'єднання перестане.

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

Curl доступний, хоча здається, але я не знаю, як це працює або як його реально використовувати. Якщо у мене є список файлів у текстовому файлі (один повний шлях на рядок, наприклад 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щоб не допустити призупинення повторних спроб. Поведінка за замовчуванням, якщо ви не вказали фіксовану - затримка спроб - це спати спочатку одну секунду між повторними спробами, а потім подвоїти це, поки не досягнуть 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

Curl читає це та інтерпретує кожен із таких варіантів.

HTH,

Адам

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.