linux-labs

Вики / Сеть

wget (скачивание)

Команда GNU wget СетьHTTPФайлы

Загрузка файлов и зеркалирование сайтов из консоли; докачка, рекурсия.

wget скачивает файлы по HTTP/HTTPS/FTP. В отличие от curl (универсальный клиент для API), wget заточен под загрузку: докачка, рекурсия, зеркала, повторы.

wget https://site/file.tar.gz     # скачать в текущий каталог
wget -O out.tar.gz https://site/x # сохранить под своим именем
Ключ Значение
-O FILE сохранить под именем (-O- — в stdout)
-P DIR каталог назначения
-c докачать прерванное (Range)
-q / -nv тихо / не подробно (для скриптов)
-i FILE список URL из файла
--limit-rate=1m ограничить скорость
-t N / --retry-connrefused число повторов
--timeout=N таймаут
-r -np -k рекурсия / не выше каталога / поправить ссылки
--header= / --user=/--password= заголовки / авторизация
wget -c https://site/big.iso              # докачать прерванное
wget -nv -P /downloads https://site/x     # тихо, в каталог
wget -O - https://site/script.sh | less   # в stdout (посмотреть, не сохраняя)
wget -i urls.txt                          # скачать список URL из файла
wget --limit-rate=2m https://site/x       # ограничить скорость 2 МБ/с
wget -t5 --retry-connrefused https://site/x   # упорные повторы (флапающая сеть)
wget --header='Authorization: Bearer TOK' https://api/x   # с токеном
wget --user=u --password=p ftp://host/file

# зеркало каталога сайта (осторожно с объёмом):
wget -r -np -k -p https://site/docs/      # рекурсия, не выше, поправить ссылки, +ресурсы
wget -r -l2 -np https://site/             # ограничить глубину -l

ERROR: cannot verify ... certificate

Проблема с TLS-сертификатом/цепочкой. Правильно — починить CA (ca-certificates, см. openssl-tls); для разовой отладки --no-check-certificate (НЕ в проде).

Скачивание оборвалось

wget -c URL докачает с места обрыва, если сервер поддерживает Range. Для надёжности в скриптах — -c -t0 --retry-connrefused.

Получил HTML вместо файла

Ссылка ведёт на страницу/редирект/логин, а не на файл. Проверь URL и редиректы (wget -S покажет заголовки ответа). Для API лучше curl.

Качается бесконечно / зеркалит лишнее

У рекурсии -r без -np/-l нет тормозов. Ограничивай: -np (не выше каталога), -l N (глубина), -A/-R (фильтр расширений).

Медленно/упирается в канал

--limit-rate= чтобы не забить канал; -q чтобы не засорять лог скрипта.

wget URL                          # скачать
wget -O name URL                  # под своим именем
wget -c URL                       # докачать
wget -O- URL | cmd                # в stdout (в конвейер)
wget -i urls.txt                  # список URL
wget -r -np -k -p URL             # зеркало каталога

См. также