Wget — загрузка по требованию
Загрузка данных по сети — операция тривиальная и часто востребованная. Если вы работаете под Windows, то наверняка используете «качалку» вроде Download Master или GetRight. Но для платформы Linux выбор невелик. Да и требования к качалке должны быть несколько иные, например, она должна поддерживать командную строку. К счастью, практически во все дистрибутивы GNU/Linux включена утилита, которая называется Wget. В этой статье мы рассмотрим возможности этого приложения и расскажем о том, как с ним работать.
Содержание:
1. Возможности утилиты Wget
2. Примеры использования: синтаксис командной строки
3. Альтернатива Wget
1. Возможности утилиты Wget
Практически в любом современном браузере есть встроенный модуль для загрузки файлов. Однако его возможности, как правило, очень скромны — например, нет возможности ограничения скорости загрузки, отсутствуют опции выбора загружаемых файлов по маске. К тому же стандартная «качалка» мало пригодна для пакетного копирования файлов, загрузить весь сайт целиком для нее — большая проблема.
Менеджер загрузки Wget обладает полным набором необходимых инструментов и опций для загрузки файлов. Он оптимизирован для работы с консолью управляется командной строкой и удобен для автоматизации самых различных задач.
Среди его возможностей:
- Загрузка любых файлов, включая (X)HTML-страницы.
- Он может продолжать прерванные загрузки используя опции протокола
REST
иRANGE
. - Возможность применения подстановочных знаков имен файлов и рекурсивное отзеркаливание каталогов.
- При необходимости программа преобразует абсолютные ссылки в загруженных документах в относительные, чтобы загруженные документы могли ссылаться друг на друга локально.
- При загрузке по FTP программа может копировать файлы «по маске» имени.
- Wget умеет загружать файлы, используя пакетный список из составленных ссылок.
- Программа может работать в большинстве UNIX-подобных операционных систем.
- Утилита работает с HTTP-прокси-серверами.
- Имеет поддержку HTTP-cookies.
- Поддержка работы в автоматическом или фоновом режимах.
- Может работать с постоянными HTTP-соединениями.
- Умеет читать временные метки локальных файлов, также определяет по ним нужно ли повторно загружать документы при зеркалировании.
Большинство функций приложения полностью настраиваются, либо с помощью параметров командной строки, либо с помощью файла инициализации wgetrc
.
Существует также обновленная версия Wget2 не распространяется по дефолту в большинстве дистрибутивов, которая отличается от стандартной первой несколькими дополнительными опциями.
Так, в частности, она уже поддерживает HTTP/2, работает с HTTP-сжатием, умеет устанавливать параллельные соединения качать в несколько потоков. Также она работает с расширением для ускорения открытия последовательного протокола управления передачей (TCP) между двумя конечными точками.
2. Примеры использования: синтаксис командной строки
Перейдем к примерам использования Wget при помощи командной строки.
Установка приложения
В большинстве дистрибутивов GNU/Linux это приложение уже включено. Однако его можно и установить самостоятельно.
Инсталляция в Ubuntu и Debian одинакова:
$ sudo apt install wget
Для установки на CentOS и Fedora используйте $ sudo yum install wget
.
Скачивание файла
Самая простая функция приложения — обычная загрузка файла. Для скачивания файла применяйте следующую конструкцию:
$ wget https://wordpress.org/latest.zip
В процессе копирования данных с помощью Wget в консоли отображается индикатор хода выполнения задачи, а также имя передаваемого файла, его объем, скорость загрузки и расчетное время необходимое для завершения загрузки.
После завершения процесса копирования файла вы можете найти сохраненные данные в своем текущем рабочем каталоге. Чтобы указать иное месторасположение при загрузке, следует использовать ключ -P
, например
$ wget https://wordpress.org/latest.zip -P /home/serge
сохранит файл в папку home/serge
.
В тех случаях, когда необходимо изменить имя записываемого файла, следует использовать параметр -O
:
$ wget -O wordpress.zip https://wordpress.org/latest.zip
Скачивание данных в фоновом режиме
Загрузка файла может быть выполнена в фоновом режиме:
$ wget -b https://distro.ibiblio.org/puppylinux/puppy-fossa/fossapup64-9.5.iso
Пакетная загрузка данных
Пакетная загрузка файлов — это одна из самых удобных функций Wget. Чтобы воспользоваться ею, следует создать текстовый файл, в котором будет содержаться список ссылок загружаемых файлов. Далее используем следующий синтаксис:
$ wget –I links_file.txt
При запуске с таким параметром загрузка будет осуществляться по одному файлу из списка.
Указание числа попыток соединения
Wget был разработан для обеспечения устойчивой передачи данных на низкоскоростных или крайне нестабильных сетевых соединениях. Если в результате проблем с сетью загрузка не удалась, утилита будет повторять попытки до тех пор, пока не будет получен весь файл. Если сервер поддерживает повторную загрузку, он проинструктирует приложение, как перезапустить загрузку с того места, где она была прежде прервана.
В параметрах Wget можно указать число попыток, которое будет совершено, прежде чем утилита откажется от загрузки. Для этого используется параметр --tries
. Например, следующая команда говорит о том, что будет предпринято 80 попыток:
$ wget ––tries=80 https://distro.ibiblio.org/puppylinux/puppy-fossa/fossapup64-9.5.iso
Контроль скорости загрузки
В отличие от большинства встроенных в браузер менеджеров загрузки в Wget можно контролировать скорость загрузки данных. Делается это с помощью параметра --limit-rate=
. Например, строка вида
$ wget --limit-rate=500k https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86/alpine-virt-3.15.0-x86.iso
говорит о том, что файл будет загружаться с ограничением по скорости до 500 килобайт в секунду.
Загрузка по FTP
Загрузка по протоколу FTP в программе Wget может выполняться как в анонимном режиме, так и с авторизацией пользователя. По умолчанию пассивный вариант с загрузкой выглядит так:
$ wget ftp://ftp.mgts.by/debian-cd/11.1.0-live/amd64/iso-hybrid/debian-live-11.1.0-amd64-cinnamon.iso
Способ с авторизацией по логину и паролю:
$ wget ftp://login:[email protected]/some_file.iso
Также возможна альтернативная запись этой команды:
$ wget --ftp-user=login –ftp-password=********* ftp_link
Возобновление загрузки
Если в процессе копирования файла произошла остановка загрузки, файл можно впоследствии докачать, используя параметр -с
, например:
$ wget –c https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86/alpine-virt-3.15.0-x86.iso
Если данную опцию не использовать, загрузка начнется с начала.
Загрузка сайта целиком на локальный диск
В отличие от большинства менеджеров загрузки Wget умеет создавать копию сайта на локальном диске:
$ wget --mirror -p --convert-links -P /home/serge url_site.com
При использовании опции -p
выполняется копирование всех файлов, которые нужны для корректного отображения HTML-страниц, а параметр --convert-links
позволяет преобразовать ссылки в загружаемых файлах, чтобы они нормально отображались на локальной версии сайта.
Управление рекурсией загрузки сайта целиком
В тех случаях, когда необходимо скачивать сайт целиком с указанием глубины рекурсии, следует применять команду с параметром -r
, --recursive
:
wget -r -l 10 -k -o log-file.txt -p http://example.org/
-l
,--level=ЧИСЛО
число, определяющее глубину рекурсии если указать inf или 0 — глубина трассировки сайта берется как бесконечность.-k
,--convert-links
конвертирование ссылок в загруженном HTML или CSS на локальные.-o
,--output-file=ФАЙЛ
запись логов в файл.-p
,--page-requisites
параметр включающий загрузку всех ресурсов картинки и пр., которые требуются для корректного отображения HTML-страницы.-m
,--mirror
укороченный параметр, аналогичный-N -r -l inf --no-remove-listing
.
Отключение проверки сертификата
Когда вам необходимо загрузить файл через HTTPS с хоста с нерабочим (неактуальным) сертификатом SSL, задействуйте опцию --no-check-certificate
:
$ wget --no-check-certificate https://domain-with-invalid-ss.com
Подмена агента при блокировке
Бывает ситуация, когда загрузка файла через Wget прерывается удаленным хостом, который блокирует агента пользователя. В этом случае можно включить эмуляцию альтернативного браузера и подменить заголовок в запросе. Для этой цели используется параметр -U
.
$ wget --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" http://wget-forbidden.com/
3. Альтернатива Wget
Альтернатив Wget в Linux не так и много. Пожалуй, один из лучших вариантов — Aria2 (https://github.com/aria2/aria2), бесплатная программа для скачивания файлов по сети и управляемая командной строкой.
Она выполняет загрузку данных по HTTP-, HTTPS-, FTP-протоколам. Также она может работать как клиент сети BitTorrent. Используя контрольные суммы блока данных для Metalink, Aria2 автоматически проверяет части данных во время загрузки файла.
Управлять утилитой Aria2 можно удаленно — через HTTP по протоколам JSON-RPC
и XML-RPC
. Также возможен интерфейс JSON-RPC
через WebSocket. Из прочих утилит можно выделить менеджер uGet есть версия и под Android, а также написанная на Python HTTPie. Последняя объединяет возможности Wget и утилиты Curl.
Функционал Wget можно найти и в других проектах. В отличие от оригинального Wget это клоны, которые лишь имитируют некоторые возможности клиента. Так, например, схожий инструмент есть в арсенале сборки OpenWrt и в наборе UNIX-утилит командной строки BusyBox (https://busybox.net/).
Если же возникает необходимость использования графического интерфейса, можно установить менеджер загрузок Gwget. По сути это оболочка для программы Wget, работающая для GNOME 2. Она поддерживает все функции оригинального приложения, такие как возобновление загрузки, рекурсивное скачивание и загрузку по FTP, а также отображает сообщения в области уведомлений и поддерживает перетаскивание (drag-and-drop
) файлов в окне программы.
В заключение предлагаем подробное обучающее видео по теме Wget для тех, кто жаждет практики:
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: