Команда 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 не будет для вас таким непонятным. Если я упустил что-то важное о команде или у вас остались вопросы, спрашивайте в комментариях!
Утилита wget в Linux
Для для выполнения закачек из Интернет по протоколам HTTP или FTP в системах Linux существует специализированная утилита — wget. Она управляется из командной оболочки, имеет простой синтаксис, а также богатый функционал, позволяющий гибко выполнять закачки в самых различных ситуациях. В подавляющем большинстве дистрибутивов Linux wget изначально предустановлена в системе.
Особенности wget
Утилита wget обладает рядом особенностей, делающих её самым эффективным и популярным инструментом для организации загрузок, в особенности среди системных администраторов:
- утилита является стандартным инструментом для дистрибутивов на базе Не нужно предварительно ничего устанавливать, настраивать или компилировать (если, конечно не нужно использовать самую актуальную версию wget), достаточно просто начать использование;
- wget поддерживает работу в фоновом режиме;
- утилита самостоятельно контролирует соединения и поэтому способна осуществлять докачку при потере соединений или плохой связи;
- поддержка рекурсивного режима работы wget позволяет автоматически выполнять закачки из множества ресурсов, например, закачивая несколько HTML-страниц или поддиректорий с FTP-сервера.
Утилита wget обладает очень богатым функционалом, который полностью описан на официальных страницах технической документации, доступной по команде man wget. Также можно воспользоваться опцией —help для получения списка поддерживаемых ключей и их описания. В большинстве случаев опция —help предоставляет описание на языке, соответствующем текущей локализации системы.
Опции
- -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 указывается один единственный параметр — ссылка (URL) на ресурс (файл, картинка, HTML-страница, каталог FTP-сервера и т.д.) для закачки:
Если вы получите ошибку -bash: wget: команда не найдена, то необходимо установить wget
И снова запустите команду
В данном случае wget скачала архив c CMS Drupal с официального сайта разработчиков. Как видно, запрос был автоматически перенаправлен к FTP-ресурсу, с которого потом и началась закачка. Утилита в процессе своей работы наглядно выводит всю информацию о соединении и закачке: протокол, скорость, объём, прогресс, время и т. д. По-умолчанию закачки сохраняются в текущем каталоге.
Работа с прокси-сервером
Для того, чтобы задействовать подключение через прокси-сервер, можно просто использовать для этой цели специальные переменные окружения, а затем вызвать команду wget – она автоматически будет использовать сделанные настройки для прокси, как для HTTP, так и для FTP:
Использование рекурсивной закачки
Чтобы заставить wget автоматически переходить по ссылкам и скачивать соответствующие ресурсы, нужно воспользоваться ключом -r. Также с помощью ключа -l можно указать, до какой глубины спускаться по ссылкам:
В данном случае для ключа -l указано значение 0 — бесконечная глубина ссылок. Дополнительный ключ -np указывает wget, что в ходе рекурсивного исполнения нельзя подниматься выше указанного уровня (директории), т. е. в данном случае выше articles.
Следующая команда скачает сайт полностью
После чего в директорию site.ru загрузится сайт со всеми страницами. Параметр «-E» добавляет к файлам расширение html, «-nc» — не перезаписывать уже существующие файлы. Остальные опции мы уже рассмотрели выше.
Режим докачки
Докачивание файлов очень полезно при некачественном или низкоскоростном соединении. Когда необходимо продолжить закачку без потери прогресса после обрывов подключений или когда из-за низкой скорости не хватает времени завершить закачку за один раз. В таких случаях нужно использовать для wget режим докачки и для этого служит ключ -c. Например:
Ключ -t, используемый в данном примере позволяет задавать количество попыток. (0 — бесконечное число попыток) повторного соединения при обрывах. На самом деле, ключи -t и -c разумно использовать всегда.
Фоновый режим
Закачку с помощью утилиты wget можно (а часто даже нужно) запускать в фоновом режиме. Для этого предназначен ключ -b:
Работа продолжается в фоновом режиме, pid 22121
Выходные данные будут записаны в «wget-log».
При этом командная оболочка освободится для других задач. А вывод, который помещается в файл wget-log (текущего каталога) можно отслеживать командой tail -f wgetlog.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.