Загрузка данных по сети — операция тривиальная и часто востребованная. Если вы работаете под Windows, то наверняка используете «качалку» вроде Download Master или GetRight. Но для платформы Linux выбор невелик. Да и требования к качалке должны быть несколько иные, например, она должна поддерживать командную строку. К счастью, практически во все дистрибутивы GNU/Linux включена утилита, которая называется Wget. В этой статье мы рассмотрим возможности этого приложения и расскажем о том, как с ним работать.
Содержание:
1. Возможности утилиты Wget
2. Примеры использования: синтаксис командной строки
3. Альтернатива Wget
Практически в любом современном браузере есть встроенный модуль для загрузки файлов. Однако его возможности, как правило, очень скромны — например, нет возможности ограничения скорости загрузки, отсутствуют опции выбора загружаемых файлов по маске. К тому же стандартная «качалка» мало пригодна для пакетного копирования файлов, загрузить весь сайт целиком для нее — большая проблема.
Менеджер загрузки Wget обладает полным набором необходимых инструментов и опций для загрузки файлов. Он оптимизирован для работы с консолью
Среди его возможностей:
REST
и RANGE
.Большинство функций приложения полностью настраиваются, либо с помощью параметров командной строки, либо с помощью файла инициализации wgetrc
.
Существует также обновленная версия Wget2
Так, в частности, она уже поддерживает HTTP/2, работает с HTTP-сжатием, умеет устанавливать параллельные соединения
Перейдем к примерам использования 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 в программе 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:password@ftp.example.org/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=ЧИСЛО
число, определяющее глубину рекурсии -k
, --convert-links
конвертирование ссылок в загруженном HTML или CSS на локальные.-o
, --output-file=ФАЙЛ
запись логов в файл.-p
, --page-requisites
параметр включающий загрузку всех ресурсов -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/
Альтернатив Wget в Linux не так и много. Пожалуй, один из лучших вариантов — Aria2 (https://github.com/aria2/aria2), бесплатная программа для скачивания файлов по сети и управляемая командной строкой.
Она выполняет загрузку данных по HTTP-, HTTPS-, FTP-протоколам. Также она может работать как клиент сети BitTorrent. Используя контрольные суммы блока данных для Metalink, Aria2 автоматически проверяет части данных во время загрузки файла.
Управлять утилитой Aria2 можно удаленно — через HTTP по протоколам JSON-RPC
и XML-RPC
. Также возможен интерфейс JSON-RPC
через WebSocket. Из прочих утилит можно выделить менеджер uGet
Функционал Wget можно найти и в других проектах. В отличие от оригинального Wget это клоны, которые лишь имитируют некоторые возможности клиента. Так, например, схожий инструмент есть в арсенале сборки OpenWrt и в наборе UNIX-утилит командной строки BusyBox (https://busybox.net/).
Если же возникает необходимость использования графического интерфейса, можно установить менеджер загрузок Gwget. По сути это оболочка для программы Wget, работающая для GNOME 2. Она поддерживает все функции оригинального приложения, такие как возобновление загрузки, рекурсивное скачивание и загрузку по FTP, а также отображает сообщения в области уведомлений и поддерживает перетаскивание (drag-and-drop
) файлов в окне программы.
В заключение предлагаем подробное обучающее видео по теме Wget для тех, кто жаждет практики:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…