Ubuntu. Использование команды Wget
В этой статье будет рассмотрен процесс использования консольной утилиты wget с наиболее распространенными опциями.
Что такое Wget
Wget – консольная программа для загрузки файлов из интернета, позволяющая скачивать файлы по протоколам HTTP, HTTPS и FTP.
Большое количество опций этой утилиты позволяет скачивать несколько файлов одновременно, возобновлять загрузки, ограничивать скорость скачивания, загружать файлы в фоновом режиме, делать оффлайновое зеркало страниц какого-либо сайта и многое другое.
Установка Wget
В большинстве дистрибутивов Linux пакет wget предустановлен по умолчанию.
Но если wget отсутствует в системе, то его можно загрузить при помощи менеджера пакетов.
Установка Wget в Ubuntu и Debian
Установка Wget в CentOS и Fedora
Синтаксис команд для Wget
Перед началом использования консольной утилиты wget стоит ознакомиться с используемым ей форматом команд.
В общем случае синтаксис команд для wget выглядит так:
где “options” – дополнительные опции, а “url” – ссылка на файл или директорию, которую вы хотите скачать.
Как скачать файл при помощи Wget
Простейший вариант использования wget – скачивание файла в текущую директорию без всяких опций.
В качестве примера рассмотрим команду для скачивания архива с ядром Linux:
При ее использовании wget определяет сопоставляет домен с IP-адресом сервера, подключается к этому серверу и начинает загрузку данных.
В процессе загрузки в консоли будет отображаться строка состояния с именем файла и его размером, скоростью скачивания и примерным подсчетом времени до окончания загрузки. После окончания загрузки скачанный файл можно будет найти в той директории, которая была активна на момент ввода команды.
Чтобы не выводить всю эту информацию в консоль можно запустить wget с опцией -q:
А если файл с таким именем уже существует, то wget сохранит его копию, добавив после оригинального названия цифровой номер.
Как сохранить скачиваемый файл под другим именем
Для того, чтобы автоматически сохранить скачиваемый файл под другим названием можно воспользоваться опцией -O, указав после нее желаемое имя файла:
В данном примере с GitHub скачивается архив с движком Hugo (master.zip) и сохраняется на компьютере под названием latest-hugo.zip
Как скачать файл в определенную директорию
По умолчанию wget сохраняет скачиваемый файл в текущую активную директорию. Чтобы сохранить файл по другому пути можно воспользоваться опцией -P, указав после нее место для сохранения:
В данном примере файл с образом дистрибутива CentOS 7 будет скачан в директорию /mnt/iso/.
Как ограничить скорость скачивания
Для ограничения скорости загрузки можно воспользоваться опцией –limit-rate (обратите внимание: два дефиса в начале), указав предел допустимой скорости в байтах, килобайтах (суффикс k) или мегабайтах (суффикс m):
В вышеприведенных примерах скорость загрузки будет ограничена до 1 мегабайта или 1024 килобайт в секунду.
Как возобновить загрузку
Если при помощи wget загружался крупный файл, но соединение прервалось, то можно продолжить его загрузку при помощи опции -c вместо того, чтобы начинать загружать с самого начала:
Однако, при этом необходимо чтобы сам сервер поддерживал возможность возобновления загрузки. В ином случае wget начнет загрузку с начала и перезапишет имеющийся файл.
Как скачивать файлы в фоне
Чтобы загрузить файл в фоновом режиме можно воспользоваться опцией -b:
Это полезно если вы загружаете какой-то крупный файл и во время его загрузки хотите продолжать пользоваться консолью.
Как изменить User-Agent при скачивании
В некоторых случаях удаленный сервер может блокировать доступ для нестандартных User-Agent, используемых ботами или утилитами вроде wget.
Как быть в таких ситуациях? Эмулировать User-Agent какого-нибудь распространенного браузера при помощи опции -U:
В примере выше wget будет скачивать содержимое сайта http://wget-forbidden.com/, эмулируя браузер Firefox 60.
Как скачивать сразу несколько файлов
Для одновременной загрузки нескольких файлов можно воспользоваться опцией -i и задать путь к текстовому файлу со списку URL для загрузки:
Содержимое файла linux-distros.txt может выглядеть следующим образом:
Каждый URL в списке должен начинаться с новой строки.
Как скачивать файлы по FTP
Для скачивания файлов с требующего авторизации FTP-сервера нужно указать свой логин и пароль:
Как скачать сайт при помощи Wget
Для создания зеркала веб-сайта можно использовать wget с опцией -m. При этом будет создана локальная копия вебсайта со всем его содержимым, включая картинки:
Если скачиваемый веб-сайт планируется использовать для локального просмотра, то стоит добавить несколько дополнительных аргументов:
Опция -k нужна для того, чтобы wget автоматически сконвертировал все гиперссылки в загружаемых HTML-файлах для их работоспособности оффлайн. А опция -p включает в список объектов для скачивания необходимые для правильного отображения сайта ресурсы, вроде скриптов (JavaScript) и таблиц стилей CSS.
Как пропустить проверку SSL-сертификата
Если нужно скачать файл по HTTPS-протоколу с ресурса, обладающего некорректным SSL-сертификатом (распространенный пример – владелец поставил вручную бесплатный сертификат от Let’s Encrypt и забыл продлить его спустя три месяца), то можно воспользоваться опцией –no-check-certificate (опять-таки, два дефиса в начале):
Заключение
Несмотря на кажущуюся незамысловатость, wget – довольно навороченная утилита.
В данной статье были рассмотрены наиболее распространенные сценарии ее использования для скачивания нескольких файлов одновременно, возобновления сбойных загрузок и созданий локальных зеркал веб-сайтов.
Если этого недостаточно – можно ознакомиться с официальным руководством по Wget.
Команда wget Linux
Работая в консоли, нам достаточно часто приходится взаимодействовать с сетью, например скачивать файлы или целые интернет страницы. Если интернет страницы мы скачиваем довольно редко, то с файлами дело обстоит совсем по другому. Это могут быть различные скрипты, установочные пакеты, программы, ключи, списки пакетов и многое другое. Скачать файл в консоли Linux можно с помощью утилиты wget. Ее мы и рассмотрим в этой статье.
Это очень мощная утилита, способная работать по протоколам HTTP, HTTPS и FTP. Кроме того поддерживается работа через прокси. Команда wget linux, может выполнять загрузку файлов даже в фоновом режиме — без участия пользователя, в отличии от большинства веб браузеров.
Кроме скачивания файлов, есть возможность сохранять веб страницы или даже целые веб-сайты, благодаря функции открытия ссылок на страницах. Такую возможность еще называют рекурсивной загрузкой. Это все мы и рассмотрим в сегодняшней статье, но начнем, как всегда, с синтаксиса и основных опций утилиты.
Синтаксис Wget
Команда wget linux имеет очень простой синтаксис:
$ wget опции аддресс_ссылки
Можно указать не один URL для загрузки, а сразу несколько. Опции указывать не обязательно, но в большинстве случаев они используются для настройки параметров загрузки.
Опции
Синтаксис опций очень свободный. У каждой опции, как правило есть как длинное, так и короткое имя. Их можно записывать как до URL, так и после. Между опцией и ее значением не обязательно ставить пробел, например вы можете написать -o log или -olog. Эти значения эквивалентны. Также если у опций нет параметров, не обязательно начинать каждую с дефиса, можно записать их все вместе: -drc и -d -r -c. Эти параметры wget тоже эквивалентны.
А теперь давайте перейдем к списку опций. У wget слишком много опций, мы разберем только основные.
- -V(—version) — вывести версию программы
- -h (—help) — вывести справку
- -b(—background) — работать в фоновом режиме
- -oфайл(—out-file) — указать лог файл
- -d(—debug) — включить режим отладки
- -v (—verbose) — выводить максимум информации о работе утилиты
- -q (—quiet) — выводить минимум информации о работе
- -iфайл (—input-file) — прочитать URL из файла
- —force-html — читать файл указанный в предыдущем параметре как html
- -t (—tries) — количество попыток подключения к серверу
- -O файл(—output-document) — файл в который будут сохранены полученные данные
- -с (—continue) — продолжить ранее прерванную загрузку
- -S (—server-response) — вывести ответ сервера
- —spider — проверить работоспособность URL
- -T время (—timeout) — таймаут подключения к серверу
- —limit-rate — ограничить скорость загрузки
- -w (—wait) — интервал между запросами
- -Q(—quota) — максимальный размер загрузки
- -4 (—inet4only) — использовать протокол ipv4
- -6 (—inet6only) — использовать протокол ipv6
- -U (—user-agent)— строка USER AGENT отправляемая серверу
- -r (—recursive)- рекурсивная работа утилиты
- -l (—level) — глубина при рекурсивном сканировании
- -k(—convert-links) — конвертировать ссылки в локальные при загрузке страниц
- -P (—directory-prefix) — каталог, в который будут загружаться файлы
- -m(—mirror) — скачать сайт на локальную машину
- -p(—page-requisites) — во время загрузки сайта скачивать все необходимые ресурсы
Кончено это не все ключи wget, но здесь и так слишком много теории, теперь давайте перейдем к практике. Примеры wget намного интереснее.
Использование wget Linux
Команда wget linux, обычно поставляется по умолчанию в большинстве дистрибутивов, но если нет, ее можно очень просто установить. Например установка с помощью yum будет выглядеть следующим образом:
yum -y install wget
А в дистрибутивах основанных на Debian:
sudo apt install wget
Теперь перейдем непосредственно к примерам:
1. Загрузка файла
Команда wget linux скачает один файл и сохранит его в текущей директории. Во время загрузки мы увидим прогресс, размер файла, дату его последнего изменения, а также скорость загрузки:
2. Сохранить файл с другим именем
Опция -О позволяет задать имя сохраняемому файлу, например, скачать файл wget с именем wget.zip:
wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
3. Скачать несколько файлов
Вы можете скачать несколько файлов одной командой даже по разным протоколам, просто указав их URL:
wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz ftp://ftp.gnu.org/gnu/wget/wget-1.10.1.tar.gz.sig
4. Взять URL из файла
Вы можете сохранить несколько URL в файл, а затем загрузить их все, передав файл опции -i. Например создадим файл tmp.txt, со ссылками для загрузки wget, а затем скачаем его:
5. Продолжить загрузку
Утилита wget linux рассчитана на работу в медленных и нестабильных сетях. Поэтому если вы загружали большой файл, и во время загрузки было потеряно соединение, то вы можете скачать файл wget с помощью опции -c.
wget -c http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
6. Загрузка файлов в фоне
Опция -b заставляет программу работать в фоновом режиме, весь вывод будет записан в лог файл, для настройки лог файла используются специальные ключи wget:
7. Ограничение скорости загрузки
Команда wget linux позволяет не только продолжать загрузку файлов, но и ограничивать скорость загрузки. Для этого есть опция —limit-rate. Например ограничим скорость до 100 килобит:
wget —limit-rate=100k ftp://ftp.iinet.net.au/debian/debian-cd/8.4.0/amd64/iso-dvd/debian-8.4.0-amd64-DVD-1.iso
Здесь доступны, как и в других подобных командах индексы для указания скорости — k — килобит, m — мегабит, g — гигабит, и так далее.
8. Подключение по логину и паролю
Некоторые ресурсы требуют аутентификации, для загрузки их файлов. С помощью опций —http-user=username, –http-password=password и —ftp-user=username, —ftp-password=password вы можете задать имя пользователя и пароль для HTTP или FTP ресурсов.
wget —http-user=narad —http-password=password http://mirrors.hns.net.in/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveDVD.iso
wget —ftp-user=narad —ftp-password=password ftp://ftp.iinet.net.au/debian/debian-cd/6.0.5/i386/iso-dvd/debian-6.0.5-i386-DVD-1.iso
9. Загрузить и выполнить
Вы, наверное, уже видели такие команды. wget позволяет сразу же выполнять скачанные скрипты:
wget -O — http://сайт/скрипт.sh | bash
Если опции -O не передать аргументов, то скачанный файл будет выведен в стандартный вывод, затем мы его можем перенаправить с интерпретатор bash, как показано выше.
10. Сохранить файл в папке
По умолчанию wget сохраняет файл в текущую папку, но это поведение очень легко изменить с помощью опции -P:
11. Передать информацию о браузере
Некоторые сайты фильтруют ботов, но мы можем передать фальшивую информацию о нашем браузере (user-agent) и страницу с которой мы пришли (http-referer).
wget ‐‐refer=http://google.com ‐‐user-agent=”Mozilla/5.0 Firefox/4.0.1″ //losst.ru
12. Количество попыток загрузки
По умолчанию wget пытается повторить загрузку 20 раз, перед тем как завершить работу с ошибкой. Количество раз можно изменить с помощью опции —tries:
wget —tries=75 http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
13. Квота загрузки
Если вам доступно только ограниченное количество трафика, вы можете указать утилите, какое количество информации можно скачивать, например разрешим скачать файлов из списка только на десять мегабайт:
wget -Q10m -i download-list.txt
Здесь работают те же индексы для указания размера — k, m, g, и т д.
14. Скачать сайт
Wget позволяет не только скачивать одиночные файлы, но и целые сайты, чтобы вы могли их потом просматривать в офлайне. Использование wget, чтобы скачать сайт в linux выглядит вот так:
wget —mirror -p —convert-links -P ./ аддресс_сайт
Выводы
Вот и все, теперь использование wget не будет для вас таким непонятным. Если я упустил что-то важное о команде или у вас остались вопросы, спрашивайте в комментариях!