Главная >> Команды >> Команда wget Linux

Команда 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 скачает один файл и сохранит его в текущей директории. Во время загрузки мы увидим прогресс, размер файла, дату его последнего изменения, а также скорость загрузки:

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

wget1

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

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

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

wget2

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

wget3

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

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

wget -i /wget/tmp.txt

wget4

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

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

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

wget5

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

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

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

wget6

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

wget7

Здесь доступны, как и в других подобных командах индексы для указания скорости - 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:

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

wget8

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

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

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

wget7

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 не будет для вас таким непонятным. Если я упустил что-то важное о команде или у вас остались вопросы, спрашивайте в комментариях!

16 комментариев к “Команда wget Linux”

  1. [Удалено] хотите привлечь людей к операционке,но своими методами их же и распугаете. зачем вот простому человеку открывать браузер ради ссылки на скачку ? если я уж и открою браузер,чтоб найти ссылку на скачку,то я нажму на кнопку скачать а не буду заниматься дрочерством через консоль. вы что,всех линуксоидов хотите программистами сделать или хотите донести до них простоту линукс ?

    Ответить
    • Ну так и качайте через браузер, никто же не мешает. Ясное дело, что никто не станет менять менеджер закачек браузера на wget. Линукс тем и силен, что есть много альтернатив. У этой утилиты совсем другие цели, например она удобна для выполнения инструкций по установке программ (выполнили несколько команд и программа установлена, не нужно еще искать какие-либо ссылки и страницы загрузок), а также для загрузки файлов когда нет доступа к графической системе.

      Ответить
  2. Здравствуйте! Подскажите, есть такой ключ -N, по описанию "файл будет загружен только если он новее уже существующего, или если размер его не совпадает с имеющейся копией". Последовательно запускаю скрипт с содержимым типа wget -N -P /downloads/ https://url.com/file.csv и каждый раз вижу новое "время правки" файла. Получается что он каждый раз загружается?

    Ответить
    • Получается что так, возможно сервер в заголовках отправляет информацию, что файл был сгенерирован только что. Таким образом утилита думает что это новая версия, хотя на самом деле это тот же файл.

      Ответить
  3. привет. качаю сайт с документами. если не залогинеться, то количество загружаемых файлов в сутки равно трем. залогинелся с помощью cookie.txt. обнаружил что зарегистрированным пользователям, доступно только 10 скачиваний в сутки. wget, также качает весь сайт и 10 файлов. как оюойти запрет админа?

    Ответить
  4. Очень хорошая статья. Нужно скачать радиопоток с сервера. Указала параметры куда качать и как назвать скачанный файл. Всё работает на ура! А потом добавила захотела спихнуть это всё дело в фон, добавила параметр -b, и... пошли логи, что запись идет, вот только как теперь остановить запись? 🙂 Ушла гуглить. А то "Горшочек вари..." и всё!

    Ответить
  5. Я не понимаю, как это должно работать. Я указываю название для сохраняемого файла (командой -O) и папку, в которую его нужно сохранить (командой -P). В результате файл сохраняется рядом с батником, вызвавшим эту команду, а вовсе не в нужную папку. Если же убрать команду -O, файл сохраняется в нужную папку, но с оригинальным названием. Так что, получается, невозможно получить и то, и другое? Но это же абсурд! И почему, черт возьми, никто не приводит пример того, как это правильно делается. Все приведенные примеры в духе "выучить, сдать и забыть": абсолютно стерильные. Для тех, кто все равно никогда не будет этим пользоваться.

    Ответить
  6. Привет. У вас в пункте №7 указаны неверные единицы измерения, вы пишете:
    "есть опция --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 - гигабит, и так далее.",

    тогда как в справочном руководстве (man) буржуйским по белому написано:
    "--limit-rate=amount
    Limit the download speed to amount bytes per second. Amount may be
    expressed in bytes, kilobytes with the k suffix, or megabytes with the m
    suffix. For example, --limit-rate=20k will limit the retrieval rate to
    20KB/s. This is useful when, for whatever reason, you don't want Wget to
    consume the entire available bandwidth".
    Кроме того, на приложенном вами скриншоте видно, что скорость загрузки указана в KB/s, а не в Kb/s или kbit/s.

    Ответить
  7. Добрый день, есть электронная книга на ресурсе activetextbook, штатными средствами ресурса выкачать нельзя, выдрал ссылку непосредственно на материал формата https://publisher.activetextbook.com/active_textbooks/xxx/pg2/large.jpg
    pg2 - это страница 2 из данной книги.
    Хочу скриптом выкачать все страницы, номер страницы записать в переменную и прогнать её в цикле, увеличивая на единицу каждый раз, потом собрать всё в один пдф. Проблема в том, что через wget выкачивается html страница, скачать можно, открыв ссылку в браузере > правая кнопка мышки > сохранить картинку как. Направьте на путь, как лучше реализовать такую задачу и поможет ли здесь wget?

    Ответить
  8. Самого главного нигде не написано, ни в этой статье, ни в остальных аналогичных по теме wget на других сайтах, а именно- как скачать ДИРЕКТОРИЮ со всеми вложениями! А не весь сайт и не отдельные файлы. И не через скармливание wget'у файла с ссылками которые нужно скачать по очереди.

    Вот команда для этого: wget --no-parent -r -P ~/Downloads/XXX http://xxx.ru/files/material-static/1755/
    где вместо xxx ваши реальные пути.

    Много времени ковырялся с такой элементарной и нужно функцией, пока не дошел сам опытным путем. И негде же про это, ска, не написано, зато описаны кучи других ситуаций которые нужны гораздо реже!

    Ответить

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