Примеры использования Wget, или как качать из командной строки

Часто возникает необходимость при отсутствии графического интерфейса (например при настройке удаленного сервера) скачать файл на диск. К тому же бывают ситуации, когда нет времени (или просто влом) читать километровый мануал только для того, чтобы скачать архив. Поэтому в данной статье приведу несколько простых примеров использования популярной консольной «качалки» — Wget.

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


Практически во всех дистрибутивах Wget установлен по умолчанию, но если это не так, то:

$ apt-get install wget

Что бы просто скачать файл, в качестве аргумента указываем http или ftp ссылку на него:

$ wget http://somedomain.com/somefile.tar

или с FTP:

$ wget ftp://somedomain.com/somefile.tar

где «http://somedomain.com/somefile.tar» — прямая ссылка на файл, который нужно скачать.

Во Wget, как и в любой продвинутой «интернет-качалке», есть возможность докачки. Для этого используется параметр -c или —continue :

$ wget --continue http://somedomain.com/somefile.tar

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

$ wget http://somedomain.com/somefile.tar

или опять с докачкой:

$ wget --continue http://somedomain.com/somefile.tar

Бывает надобность выкачать несколько десятков (или сотен) файлов. Один из способов — указать Wget-у в качестве аргумента текстовый документ, или HTML-страницу, содержащие прямые ссылки на файлы, которые нужно скачать. Для этого используется опция -i или —input-file :

$ wget -i /path/to/list

или

$ wget --input-file=/path/to/list

Чтобы задать шаблон файлов, которые стоит закачивать или игнорировать, удобно использовать опции -A —accept и -R —reject, указывая в качестве аргументов к ним список шаблонов, разделяемых запятой. Например, что бы при закачке списка файлов игнорировать файлы с расширениями exe и avi, воспользуемся командой:

$ wget --reject *.exe, *.avi --input-file=/path/to/list

Следует заметить, что во всех предыдущих примерах закачка будет производиться в текущий каталог. Для указания произвольного каталога следует использовать опцию -P или —directory-prefix :

$ wget --directory-prefix=/download/directory http://somedomain.com/somefile.tar

Так как Wget использует канал интернета «по полной программе», иногда бывает полезно ограничить скорость закачки, дабы не мешать работе других интернет-приложений. В этом поможет опция —limit-rate, в качестве аргумента для которой укажем скорость в килобайтах:

$ wget --limit-rate=120k http://somedomain.com/somefile.tar

Вышеперечисленные опции можно комбинировать в зависимости от потребностей.

Рассмотрим другой интересный вариант применения Wget — скачивание сайтов. Можно просто сделать зеркальную копию сайта, используя опцию -m или —mirror :

$ wget -m http://www.somedomain.com/

в этом случае сохраняется архитектура абсолютных ссылок.

Также возможен вариант создания копии сайта для локального просмотра, в которой каждая ссылка указывает на соответствующий локальный файл. Для этого используем следующий набор опций:

$ wget -k -r -l0 -np --page-requisites http://www.somedomain.com/

кратко о каждой опции:

-k —convert-links — конвертирует абсолютные ссылки в локальные

-r —recursive — рекурсивная загрузка, т.е. все вложенные ссылки и страницы будут закачены

-l —level — уровень вложения ссылок 0 — бесконечно (по умолчанию — 5)

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

-p —page-requisites — загружать все необходимое для корректного отображения страниц (картинки, css, JavaScript и т.п.)

Это далеко не полный список возможных вариантов использования данной утилиты. Я описал лишь самые элементарные примеры, чтобы вкратце показать возможности и универсальность такого мощного инструмента как Wget.

Ознакомиться с полным руководством по Wget можно здесь(Eng.) или здесь(Рус.).