Команда wget в Linux

Сегодня разберем и рассмотрим использование утилиты wget в Linux. Работая в консоли, нам достаточно часто приходится взаимодействовать с сетью, например скачивать файлы или целые интернет страницы. Это могут быть различные скрипты, установочные пакеты, программы, ключи, списки пакетов и многое другое. Скачать файл в консоли Linux можно с помощью утилиты wget. Ее мы и рассмотрим в этой статье.

wget — очень мощная утилита, способная работать по протоколам HTTP, HTTPS и FTP. Кроме того поддерживается работа через прокси. Команда wget, может выполнять загрузку файлов даже в фоновом режиме — без участия пользователя, в отличии от большинства веб браузеров.

Кроме скачивания файлов, есть возможность сохранять веб страницы или даже целые веб-сайты, благодаря функции открытия ссылок на страницах. Такую возможность еще называют рекурсивной загрузкой. Это все мы и рассмотрим в сегодняшней статье, но начнем, как всегда, с синтаксиса и основных опций утилиты.

Использование wget в Linux

Команда wget linux, обычно поставляется по умолчанию в большинстве дистрибутивов, но если нет, ее можно очень просто установить. Например установка будет выглядеть следующим образом:

yum -y install wget

А в дистрибутивах основанных на Debian:

sudo apt install wget

Теперь перейдем непосредственно к примерам:

Синтаксис Wget

Команда wget linux имеет очень простой синтаксис:

wget опции адрес_ссылки

Можно указать не один URL для загрузки, а сразу несколько. Опции указывать не обязательно, но в большинстве случаев они используются для настройки параметров загрузки.

Опции Wget

Синтаксис опций очень свободный. У каждой опции, как правило есть как длинное, так и короткое имя. Их можно записывать как до 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) — глубина при рекурсивном сканировании. По умолчанию глубина = 5.

-k (--convert-links) — конвертировать ссылки в локальные при загрузке страниц

-P (--directory-prefix) — каталог, в который будут загружаться файлы

-m (--mirror) — скачать сайт на локальную машину

-p (--page-requisites) — во время загрузки сайта скачивать все необходимые файлы, которые нужны для отображения страницы

-np (--no-parent) — не подниматься выше начального адреса при рекурсивной загрузке.

-http-user=<user> -http-passwd=<password> — указать имя пользователя и пароль на HTTP-сервере.

-H (--span-hosts) — разрешает посещать любые сервера, на которые есть ссылка.

Кончено это не все ключи wget, но здесь и так слишком много теории, теперь давайте перейдем к практике. Примеры wget намного интереснее.

Примеры использования команды wget:

1. Загрузка файла

Команда wget скачает один файл и сохранит его в текущей директории. Во время загрузки мы увидим прогресс, размер файла, дату его последнего изменения, а также скорость загрузки:

wget http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

2. Сохранить файл с другим именем

Опция позволяет задать имя сохраняемому файлу, например, скачать файл wget.tar.gz с именем wget.zip:

wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

3. Скачать несколько файлов

Вы можете скачать несколько файлов одной командой даже по разным протоколам, просто указав их URL:

wget http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz ftp://ftp.gnu.org/gnu/wget/wget.tar.lz

4. Взять URL из файла

Вы можете сохранить несколько URL в файл, а затем загрузить их все, передав файл опции -i. Например создадим файл files.txt, со ссылками для загрузки wget, а затем скачаем его:

wget -i /wget/files.txt

5. Продолжить загрузку

Утилита wget рассчитана на работу в медленных и нестабильных сетях. Поэтому если вы загружали большой файл, и во время загрузки было потеряно соединение, то вы можете скачать файл wget с помощью опции -c.

wget -c http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

6. Загрузка файлов в фоне

Опция -b заставляет программу работать в фоновом режиме, весь вывод будет записан в лог файл, для настройки лог файла используются специальные ключи wget:

wget -b -o ~/wget.log http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

7. Ограничение скорости загрузки

Команда wget позволяет не только продолжать загрузку файлов, но и ограничивать скорость загрузки. Для этого есть опция --limit-rate. Например ограничим скорость до 100 килобит:

wget --limit-rate=100k ftp://ftp.linux.net/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 --ftp-user=login --ftp-password=password ftp://ftp.linux.net/debian/debian-cd/8.4.0/amd64/iso-dvd/debian-8.4.0-amd64-DVD-1.iso

9. Загрузить и выполнить

Вы, наверное, уже видели такие команды. wget позволяет сразу же выполнять скачанные скрипты:

wget -O http://mysite.ru/скрипт.sh | bash

10. Сохранить файл в папке

По умолчанию wget сохраняет файл в текущую папку, но это поведение очень легко изменить с помощью опции -P:

wget -P ~/Downloads/ http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

11. Передать информацию о браузере

Некоторые сайты фильтруют ботов, но мы можем передать фальшивую информацию о нашем браузере (user-agent) и страницу с которой мы пришли (http-referer).

wget ‐‐refer=http://google.ru ‐‐user-agent=”Mozilla/5.0 Firefox/4.0.1″ http://losst.ru

12. Количество попыток загрузки

По умолчанию wget пытается повторить загрузку 20 раз, перед тем как завершить работу с ошибкой. Количество раз можно изменить с помощью опции --tries:

wget --tries=75 http://test.iso

13. Квота загрузки

Если вам доступно только ограниченное количество трафика, вы можете указать утилите, какое количество информации можно скачивать, например разрешим скачать файлов из списка только на десять мегабайт:

wget -Q10m -i download-list.txt

Здесь работают те же индексы для указания размера — k, m, g, и т д.

14. Скачать сайт

Wget позволяет не только скачивать одиночные файлы, но и целые сайты, чтобы вы могли их потом просматривать в офлайне. Чтобы скачать сайт набираем вот так:

wget -r -k -l 7 -p -E -nc http://site.com/

После выполнения данной команды в директорию site.com будет загружена локальная копия сайта http://site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html.

Выводы

Вот и все, теперь использование wget не будет для вас таким непонятным. Мы рассмотрели лишь одно из возможных применений утилиты wget. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров. За более подробной информацией обращайтесь к руководству, выполнив в командной строке: man wget.

Если есть вопросы, то пишем в комментариях и не забываем проголосовать за статью.
Команда wget в Linux
5 (100%) 2 votes

3 комментария

  1. Человек-Пароход 2017-02-05
  2. SASadminАвтор 2017-01-17
  3. FinanceAmefs 2017-01-13

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *