Команда wget, представляет собой мощную утилиту Linux. Она способна загружать файлы по протоколам HTTP, HTTPS и FTP, в том числе и рекурсивно, следуя по ссылкам автоматически.
Утилита имеет ряд опций, позволяющих выполнять фоновую загрузку, возобновлять загрузку, зеркалировать веб-сайты.
Содержание
Синтаксис команды wget
wget [ПАРАМЕТР]... [URL]...
Обязательные аргументы для длинных параметров являются обязательными и для коротких параметров.
Основные опции
- -V, --version
- показать версию Wget и завершить работу
- -h, --help
- показать эту справку
- -b, --background
- после запуска перейти в фоновый режим
- -o, --output-file=ФАЙЛ
- записывать сообщения в ФАЙЛ
- -d, --debug
- показать много отладочной информации
- -q, --quiet
- ничего не выводить
- -v, --verbose
- показывать подробные сведения (по умолчанию)
- -i, --input-file=ФАЙЛ
- загрузить URL-ы согласно локальному или внешнему ФАЙЛУ
- -t, --tries=ЧИСЛО
- установить ЧИСЛО повторных попыток (0 без ограничения)
- -O, --output-document=ФАЙЛ
- записывать документы в ФАЙЛ
- -nc, --no-clobber
- пропускать загрузки, которые приведут к загрузке уже существующих файлов (и их перезаписи)
- -c, --continue
- возобновить загрузку частично загруженного файла
- -N, --timestamping
- не загружать повторно файлы, только если они не новее, чем локальные
- -T, --timeout=СЕКУНДЫ
- установка значений всех тайм-аутов равными числу СЕКУНД
- -w, --wait=СЕКУНДЫ
- пауза в СЕКУНДАХ между загрузками (при загрузке более 1 URL)
- -Q, --quota=ЧИСЛО
- установить величину квоты загрузки в ЧИСЛО
- --limit-rate=СКОРОСТЬ
- ограничить СКОРОСТЬ загрузки
- -P, --directory-prefix=ПРЕФИКС
- сохранять файлы в ПРЕФИКС/..
- -U, --user-agent=АГЕНТ
- идентифицировать себя как АГЕНТ вместо Wget/ВЕРСИЯ
- -r, --recursive
- включение рекурсивной загрузки
- -l, --level=ЧИСЛО
- глубина рекурсии (inf и 0 — бесконечность)
- -k, --convert-links
- делать ссылки локальными в загруженном HTML или CSS
- -m, --mirror
- короткий параметр, эквивалентный -N -r -l inf --no-remove-listing
- -p, --page-requisites
- загрузить все изображения и проч., необходимые для отображения HTML-страницы
Установка wget Linux
Большинство дистрибутивов Linux имеют команду wget
в базовой поставке, но если эта утилита отсутствует, то её легко можно установить.
Установка утилиты на Ubuntu
$ sudo apt install wget
Как пользоваться wget в Linux
Загрузка файла в текущий каталог
oleg@mobile:~/store/distros/ubuntu:$ wget -c https://releases.ubuntu.com/22.04/ubuntu-22.04-desktop-amd64.iso22.04/ubuntu-22.04-desktop-amd64.iso
--2022-05-19 15:28:19-- https://releases.ubuntu.com/22.04/ubuntu-22.04-desktop-amd64.iso
Загружен сертификат CA «/etc/ssl/certs/ca-certificates.crt»
Распознаётся releases.ubuntu.com (releases.ubuntu.com)… 185.125.190.37, 91.189.91.123, 91.189.91.124, ...
Подключение к releases.ubuntu.com (releases.ubuntu.com)|185.125.190.37|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 3654957056 (3,4G) [application/x-iso9660-image]
Сохранение в: «ubuntu-22.04-desktop-amd64.iso»
ubuntu-22.04-desktop-amd64.iso 1%[ ] 41,34M 1,84MB/s ост 32m 34s
При загрузке больших файлов я постоянно использую опцию -c
, чтобы в случае обрыва связи можно было продолжить загрузку.
Загрузка нескольких файлов
Создаём пустой файл files.txt
в текущем каталоге
oleg@mobile:~/build/slackbuild64-15.0:$ touch files.txt
Открываем редактор vim и записываем в него ссылки на нужные нам файлы
oleg@mobile:~/build/slackbuild64-15.0:$ vim files.txt
Загружаем файлы с опцией -i по ссылкам
oleg@mobile:~/build/slackbuild64-15.0:$ wget -i files.txt
--2022-05-19 15:45:38-- https://slackbuilds.org/slackbuilds/15.0/network/httrack/README
Загружен сертификат CA «/etc/ssl/certs/ca-certificates.crt»
Распознаётся slackbuilds.org (slackbuilds.org)… 66.85.79.67, 2604:5800:0:90::67
Подключение к slackbuilds.org (slackbuilds.org)|66.85.79.67|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 641
Сохранение в: «README»
README 100%[=============================================================>] 641 --.-KB/s за 0s
2022-05-19 15:45:39 (6,89 MB/s) - «README» сохранён [641/641]
--2022-05-19 15:45:39-- https://slackbuilds.org/slackbuilds/15.0/network/httrack/doinst.sh
Повторное использование соединения с slackbuilds.org:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 322 [text/plain]
Сохранение в: «doinst.sh»
doinst.sh 100%[=============================================================>] 322 --.-KB/s за 0s
2022-05-19 15:45:40 (3,85 MB/s) - «doinst.sh» сохранён [322/322]
--2022-05-19 15:45:40-- https://slackbuilds.org/slackbuilds/15.0/network/httrack/httrack.SlackBuild
Повторное использование соединения с slackbuilds.org:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 2529 (2,5K)
Сохранение в: «httrack.SlackBuild»
httrack.SlackBuild 100%[=============================================================>] 2,47K --.-KB/s за 0s
2022-05-19 15:45:40 (26,7 MB/s) - «httrack.SlackBuild» сохранён [2529/2529]
--2022-05-19 15:45:40-- https://slackbuilds.org/slackbuilds/15.0/network/httrack/httrack.info
Повторное использование соединения с slackbuilds.org:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 278
Сохранение в: «httrack.info»
httrack.info 100%[=============================================================>] 278 --.-KB/s за 0s
2022-05-19 15:45:40 (3,06 MB/s) - «httrack.info» сохранён [278/278]
--2022-05-19 15:45:40-- https://slackbuilds.org/slackbuilds/15.0/network/httrack/slack-desc
Повторное использование соединения с slackbuilds.org:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 1159 (1,1K)
Сохранение в: «slack-desc»
slack-desc 100%[=============================================================>] 1,13K --.-KB/s за 0s
2022-05-19 15:45:40 (12,5 MB/s) - «slack-desc» сохранён [1159/1159]
ЗАВЕРШЕНО --2022-05-19 15:45:40--
Общее время: 1,8s
Загружено: 5 файлов, 4,8K за 0s (10,8 MB/s)
Загрузка файла в фоновом режиме
В этом случае используется опция -b
. Вывод будет записан в лог-файл.
Загрузка файла в конкретный каталог
В этом случае следует использовать опцию -P
.
oleg@mobile:~:$ wget -cP ~/build/slackbuild64-15.0/ https://slackbuilds.org/slackbuilds/15.0/games/extremetuxracer.tar.gztuxracer.tar.gz
--2022-05-19 16:04:48-- https://slackbuilds.org/slackbuilds/15.0/games/extremetuxracer.tar.gz
Загружен сертификат CA «/etc/ssl/certs/ca-certificates.crt»
Распознаётся slackbuilds.org (slackbuilds.org)… 66.85.79.67, 2604:5800:0:90::67
Подключение к slackbuilds.org (slackbuilds.org)|66.85.79.67|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 2458 (2,4K) [application/x-gzip]
Сохранение в: «/home/oleg/build/slackbuild64-15.0/extremetuxracer.tar.gz»
extremetuxracer.tar.gz 100%[=============================================================>] 2,40K --.-KB/s за 0s
2022-05-19 16:04:48 (60,6 MB/s) - «/home/oleg/build/slackbuild64-15.0/extremetuxracer.tar.gz» сохранён [2458/2458]
Создание зеркала сайта
Для скачивания сайта целиком используются опции -m, -k, -p.
oleg@mobile:$ wget -cmkp https://crux.nu/
--2022-05-19 16:12:59-- https://crux.nu/
Загружен сертификат CA «/etc/ssl/certs/ca-certificates.crt»
Распознаётся crux.nu (crux.nu)… 213.132.101.140
Подключение к crux.nu (crux.nu)|213.132.101.140|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: нет данных [text/html]
Сохранение в: «crux.nu/index.html»
crux.nu/index.html [ <=> ] 6,89K --.-KB/s за 0s
Отсутствует заголовок last-modified — временные отметки выключены.
2022-05-19 16:12:59 (62,8 MB/s) - «crux.nu/index.html» сохранён [7053]
Загружается robots.txt; не обращайте внимание на ошибки.
--2022-05-19 16:12:59-- https://crux.nu/robots.txt
Повторное использование соединения с crux.nu:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 72 [text/plain]
Сохранение в: «crux.nu/robots.txt»
crux.nu/robots.txt 100%[=============================================================>] 72 --.-KB/s за 0s
2022-05-19 16:12:59 (90,6 MB/s) - «crux.nu/robots.txt» сохранён [72/72]
Загружается robots.txt; не обращайте внимание на ошибки.
--2022-05-19 16:12:59-- http://crux.nu/robots.txt
Подключение к crux.nu (crux.nu)|213.132.101.140|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 302 Found
Адрес: https://crux.nu/robots.txt [переход]
--2022-05-19 16:12:59-- https://crux.nu/robots.txt
Подключение к crux.nu (crux.nu)|213.132.101.140|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 416 Requested Range Not Satisfiable
Файл уже полностью загружен; нечего выполнять.
--2022-05-19 16:13:00-- https://crux.nu/pub/skins/crux/pmwiki.css
Повторное использование соединения с crux.nu:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 9204 (9,0K) [text/css]
Сохранение в: «crux.nu/pub/skins/crux/pmwiki.css»
crux.nu/pub/skins/crux/pmwiki.css 100%[=============================================================>] 8,99K --.-KB/s за 0s
2022-05-19 16:13:00 (37,2 MB/s) - «crux.nu/pub/skins/crux/pmwiki.css» сохранён [9204/9204]
--2022-05-19 16:13:00-- http://crux.nu/rss.php
Подключение к crux.nu (crux.nu)|213.132.101.140|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 302 Found
Адрес: https://crux.nu/rss.php [переход]
--2022-05-19 16:13:00-- https://crux.nu/rss.php
Подключение к crux.nu (crux.nu)|213.132.101.140|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: нет данных [text/xml]
Сохранение в: «crux.nu/rss.php»
crux.nu/rss.php [ <=> ] 10,23K --.-KB/s за 0s
Отсутствует заголовок last-modified — временные отметки выключены.
2022-05-19 16:13:01 (35,4 MB/s) - «crux.nu/rss.php» сохранён [10477]
--2022-05-19 16:13:01-- https://crux.nu/Main/HomePage
Повторное использование соединения с crux.nu:443.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: нет данных [text/html]
Сохранение в: «crux.nu/Main/HomePage»
...
Заключение
Каждый пользователь, попробовавший работу с командой wget
Linux, понимает насколько она удобна. Даже пользуясь ограниченным количеством опций можно значительно повысить продуктивность своей работы.