Как я могу получить wget
(возможно, с помощью bash-скрипта), чтобы попробовать серию зеркал, если сайт не работает (или время ожидания во время загрузки)? Например, сначала попробуйте загрузить https://www.example.com/file.gz
, затем, если это не удалось , попробуйте https://mirror1.example.com/file.gz
, а затем https://another.example.com/file.gz
?
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
если хотите.
Ответ Кена Джексона точно о том, как вы это сделаете. Тем не менее, я собираюсь предположить, что у вас уже есть все ссылки в одном отдельном файле. В этом случае вам не нужны скрипты bash для выполнения этой работы. Вы можете просто запустить:
$ wget --timeout=60 --tries=1 --continue --input-file <inputfile>
Для приятного просмотра я также использую -q --show-progress
который заставит Wget отображать только индикаторы выполнения и ничего больше.
Команда, приведенная выше, пытается загрузить каждую ссылку из файла, который вы ей дали. Однако после того, как весь файл загружен, он просто запросит каждый сервер, поймет, что файл уже существует, и затем продолжит работу. Он тратит очень мало дополнительной полосы пропускания, но его гораздо проще набирать и не нужно многократный вызов двоичного файла.