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

Оставьте свой Email для того чтобы получать анонсы новых статей и полезную информацию о Linux по электронной почте
Pеклама
Посмотреть детали

Если вы искали альтернативу почтовому сервису Gmail, который уважает вашу конфиденциальность, обратите внимание на ProtonMail. Ваши письма автоматически шифруются сквозным шифрованием, поэтому читать их можете только вы и получатель. ProtonMail не собирает ваши персональные данные и базируется в Швейцарии, где действуют одни из самых строгих законов о конфиденциальности. Посмотреть детали

17 комментариев к “Команда 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 ваши реальные пути.

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

    Ответить

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