Как я могу получить wget (возможно, с помощью bash-скрипта), чтобы попробовать серию зеркал, если сайт не работает (или время ожидания во время загрузки)? Например, сначала попробуйте загрузить https://www.example.com/file.gz , затем, если это не удалось , попробуйте https://mirror1.example.com/file.gz , а затем https://another.example.com/file.gz?

2 ответа2

2

Попробуй это:

#!/bin/sh
for site in www.example.com mirror1.example.com another.mirror.com
do
    wget --timeout=60 --continue $site/file.gz  &&  break
done

Переключатель --continue позволяет вам загружать файлы с того места, где остановился последний сайт.

Обратите внимание, что вы можете отдельно установить --dns-timeout , --connect-timeout и --read-timeout если хотите.

0

Ответ Кена Джексона точно о том, как вы это сделаете. Тем не менее, я собираюсь предположить, что у вас уже есть все ссылки в одном отдельном файле. В этом случае вам не нужны скрипты bash для выполнения этой работы. Вы можете просто запустить:

$ wget --timeout=60 --tries=1 --continue --input-file <inputfile>

Для приятного просмотра я также использую -q --show-progress который заставит Wget отображать только индикаторы выполнения и ничего больше.

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

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