[Wget - насос для Интернета]
Wget 1.5.3. Руководство пользователя
VAP home logo

Запуск

Обычно Wget достаточно прост в запуске. Базовый синтаксис:

wget [опция]... [URL]...

Wget просто будет выгружать все URL перечисленные в командной строке. URL это универсальный определитель ресурса, который описан ниже.

Возможно вы захотите изменить некоторые принятые по умолчанию параметры Wget. Это можно проделать двумя способами: постоянным, задав необходимые аргументы в ".wgetrc" (см. "Конфигурационный файл") или определив их в командной строке.


Формат URL

"URL" - акроним для "Uniform Resource Locator" (универсальный определитель ресурса)1. Это компактная строка представляющая полный адрес доступа к ресурсу размещенному в Интернете. Wget распознает URL синтаксис в соответствии с RFC1738. Ниже приведена наиболее широко используемая форма его представления (квадратные скобки обозначают необязательные компоненты).

http://имя_хоста[:номер_порта]/каталог/файл
ftp://имя_хоста[:номер_порта]/каталог/файл

Также вы можете указывать внутри URL ваши имя пользователя и пароль для доступа к ресурсу.

ftp://имя:пароль@имя_хоста/путь
http://имя:пароль@имя_хоста/путь

Как имя, так и пароль, а равно и оба компонента могут быть опущены. Если вы не укажете имя пользователя или пароль для HTTP доступа, то операция авторизации не будет выполнена вообще. Если вы опустите имя для FTP, то вместо него будет использовано "anonymous". В случае отсутствия FTP пароля, в его качестве будет послан ваш e-mail адрес как пароль по умолчанию2.

Недопустимые символы в URL можно кодировать в виде "%xy", здесь "xy" - шестнадцатиричное представление ASCII кодируемого символа. Обычными недопустимыми символами являются: "%" (кодируется как "%25"), ":" (кодируется как "%3A") и "@" (кодируется как "%40"). За полным списком небезопасных символов обратитесь к RFC1738

Wget также поддерживает свойство "type" (тип) для FTP URL. По умолчанию FTP документы выгружаются в двоичном (binary) режиме (type `i'), что означает их передачу без внесения изменений. Другим полезным режимом является текстовый, называемый еще ASCII (type `a'), который выполняет преобразование разделителей строк в зависимости от типов операционных систем на обоих концах соединения и поэтому удобен для передачи текстовых файлов. Обратимся к примеру:

ftp://имя_хоста/каталог/имя_файла;type=a

Поддерживаются два альтернативных варианта представления URL, чисто из исторических соображений.

Синтаксис только для FTP (поддерживается "NcFTP"):
  имя_хоста:/каталог/файл

Синтаксис только для HTTP (введен "Netscape"):
  имя_хоста[:порт]/каталог/файл

Две данные альтернативные формы являются устаревшими и в будущем их поддержка может быть убрана.

Если вы не понимаете разницы между этими двумя нотациями или не знаете какой именно из них пользоваться, просто воспользуйтесь обычным сплошным форматом, который используется в вашем любимом броузере вроде "Lynx" или "Netscape".


Синтаксис опций

Поскольку Wget использует библиотеку "GNU getops" для обработки аргументов командной строки, каждая опция имеет короткую и длинную формы. Длинные опции проще в запоминании, но требуют большего времени для набора. Вы можете свободно смешивать разные стили опций или вводить их после аргументов командной строки. Поэтому вы можете писать:

wget -r --tries=10 http://fly.cc.fer.hr/ -o log

Пробел между опцией принимающей аргумент и самим аргументом может быть опущен, т.е. вместо "-o log" вы можете писать -olog.

Опции, которые не требуют аргумента, можно объединять вместе, например:

wget -drc URL
Полностью идентично:
wget -d -r -c URL

Поскольку опции могут быть определены после аргументов, вы можете прервать обработку опций при помощи "--". Таким образом следующая команда приведет к попытке получения доступа к URL "-x", с выводом отчета об отказе в файл "log".

wget -o log -- -x

Опции, которые принимают в качестве аргумента список значений разделенных запятыми, отвечают соглашению, что определение пустого списка приводит к очистке аргумента. Это может быть полезно для для перекрытия установок ".wgetrc". К примеру, если ваш ".wgetrc" устанавливает параметр "exclude_directories" в "/cgi-bin", то следующий пример будет сначала сбрасывать это значение, а затем устанавливать исключение для "/~nobody" и "/~somebody". Вы так же можете очищать списки в ".wgetrc" (см. "Синтаксис wgetrc").

wget -X '' -X /~nobody,/~somebody

Основные опции

-V
--version

Вывести версию Wget.

-h
--help

Вывести справочное сообщение содержащее все опции командной строки Wget.

-b
--background

Немедленно после запуска переключиться в фоновый режим выполнения. Если имя выходного файла не было определено через "-o", то весь вывод будет перенаправлен в файл "wget-log".

-e КОМАНДА
--execute КОМАНДА

Выполнить КОМАНДУ так, как будто она является частью ".wgetrc" (см. "Конфигурационный файл"). Вызываемая здесь команда будет выполнена после обработки ".wgetrc", поэтому она имеет преимущество.


Опции генерации отчета и входного файла

-o ФАЙЛ_ОТЧЕТА
--output-file=ФАЙЛ_ОТЧЕТА

Выводить все сообщения в файл ФАЙЛ_ОТЧЕТА. В нормальном режиме сообщения выводятся в стандартный поток ошибок.

-a ФАЙЛ_ОТЧЕТА
--append-output=ФАЙЛ_ОТЧЕТА

Добавлять сообщения в файл ФАЙЛ_ОТЧЕТА. Подобно "-o", но вместо перезаписи файла отчета вывод будет добавляться в его конец. Если ФАЙЛ_ОТЧЕТА не существует, то он будет создан.

-d
--debug

Включение отладочного вывода. Предназначена для разработчиков Wget на случай если он работает не верно. Ваш системный администратор мог собрать Wget без поддержки отладочного вывода, в этом случае данная опция работать не будет. Отметим что сборка Wget с поддержкой отладки совершенно безопасна. Wget собранный таким образом не будет выводить никакой отладочной информации, пока ее не запросят опцией "-d". См. "Извещение об ошибках" для дополнительной информации как пользоваться "-d" для отправки отчета об ошибках.

-q
--quiet

Полностью отключить вывод Wget.

-v
--verbose

Включить подробный вывод всей доступной информации. По умолчанию вывод подробный.

-nv
--non-verbose

Сокращенный вывод. Отключает подробный вывод но не выключает вывод полностью (для этого используйте "-q"), это означает, что сообщения об ошибках и основная информация будут выводиться.

-i ФАЙЛ
--input-file=ФАЙЛ

Читать список URL из ФАЙЛА, в этом случае нет необходимости вводить URL в командной строке. Если же они присутствуют в обоих местах: и в командной строке, и в файле; то впервую очередь будут обработаны URL из командной строки. ФАЙЛ не обязательно должен быть в формате HTML, хотя HTML тоже допустим, достаточно чтобы URL были перечислены последовательно.

Однако, если вы определите опцию "--force-html", индексный документ будет рассматриваться как HTML. В этом случае могут возникнуть проблемы с относительными ссылками, которые вы можете решить добавлением тега <base href="URL"> в документ или задав "--base=URL" в командной строке.

-F
--force-html

Когда входные данные читаются из файла, включает обработку этого файла как HTML документа. Для корректной обработки относительных ссылок в этом документе необходимо задать базовый URL путем указания его в самом документе тегом <base href="URL">, либо опцией командной строки "--base=URL".


Опции выгрузки

-t КОЛИЧЕСТВО
--tries=КОЛИЧЕСТВО

Устанавливает КОЛИЧЕСТВО попыток. Для снятия этого ограничения установите параметр в значения "0" или "inf".

-O ФАЙЛ
--output-document=ФАЙЛ

Выгружаемые документы не будут выводиться в соответствующие локальные файла, а вместо этого будут добавляться последовательно в ФАЙЛ. Если ФАЙЛ уже существует, то он будет перезаписан. Если в качестве ФАЙЛ используется "-", то все получаемые данные будут выводиться в поток стандартного вывода. Задание этой опции автоматически устанавливает количество попыток в 1.

-nc
--no-clobber

Не модифицировать локальные файлы во время рекурсивной выборки иерархии документов. Эта опция очень полезна когда вы хотите продолжить выгрузку множества файлов именно с того момента, где она была прервана. Если файлы имеют расширение ".html" или (тьфу) ".htm", то эти файлы будут считываться с локального диска о обрабатываться как будто они были получены с сервера.

-c
--continue

Продолжить выгрузку существующего файла. Применима, когда вы хотите завершить прерванную выгрузку файла начатую другой программой или самим Wget. Например, вы можете написать:

wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z

Если в текущем каталоге будет присутствовать файл "ls-lR.Z", то Wget будет расценивать его как первую порцию удаленного файла и выполнит запрос серверу продолжить выгрузку со смещения эквивалентного длине локального файла.

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

Без опции "-c" предыдущий экземпляр файла будет нетронут, а выгрузка файла будет произведена с начала в файл с именем "ls-lR.Z.1". Опция "-c" так же работает с HTTP серверами поддерживающими команду "Range" в заголовке запроса.

--dot-style=СТИЛЬ

Установить СТИЛЬ отображения процесса выгрузки. Wget делает это последовательным выводом точек на экране, каждая точка представляет собой фиксированное количество полученных данных. Любое количество точек, для облегчения подсчета, может быть объединено в кластер. Эта опция позволяет вам выбрать один из предопределенных стилей задающих объем данных представляемых точкой, количеством точек в кластере, и количеством точек в строке.

Стиль "default" определяет 1 Кбайт на точку, 10 точек в кластере, 50 точек в строке. Стиль "binary" имеет более компьютерный вид: 8 Кбайт на точку, 16 точек в кластере, 48 точек на строку (384 Кбайта в строке). Стиль "mega" применим для выгрузки больших объемом данных: 64 Кбайта на точку, 8 точек в кластере, 48 точек в строке (3 Мбайта на строку). Стиль "micro" - полная противоположность и хорош для маленьких объемов: 128 байт в точке, 8 точек в кластере, 48 точек (6 Кбайт) в строке.

-N
--timestamping

Включить контроль времени модификации файлов. Подробнее в "Контроль времени модификации".

-S
--server-response

Выводить заголовки посылаемые HTTP серверами и ответы передаваемые FTP серверами.

--spider

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

wget --spider --force-html -i bookmarks.html

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

-T СЕКУНДЫ
--timeout=СЕКУНДЫ

Задает время ожидания считывания в секундах. Во время активизации операции сетевого считывания файловый дескриптор проверяется на тайм-аут, который, если этого не делать, может привести к сохранению продолженного соединения (не прерванное чтение). Умалчиваемое значение 900 секунд (15 минут). Установление параметра в 0 отключает контроль тайм-аута.

Пожалуйста не уменьшайте умалчиваемое значение при помощи этой опции если вы точно не знаете, что делаете.

-w СЕКУНДЫ
--wait=СЕКУНДЫ

Делать паузу в указанное количество СЕКУНД между запросами. Рекомендуется использование этой опции, поскольку это снижает загрузку сервера снижением количества запросов в единицу времени. Вместо указания секунд, время так же может быть задано в минутных интервалах с использованием суффикса "m", в часах суффиксом "h" и днях суффиксом "d".

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

-Y on/off
--proxy=on/off

Включить (on) или выключить (off) поддержку прокси. По умолчанию включено, если соответствующая переменная среды окружения определена.

-Q КВОТА
--quota=КВОТА

Определить квоту объема данных для автоматической выгрузки. Значение может быть задано в байтах (по умолчанию), килобайтах (с суффиксом "k") или мегабайтах (с суффиксом "m").

Заметим, что квота не касается выгрузки единичного файла. Таким образом, если вы зададите "wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz", то файл будет выгружен всеравно полностью. То же самое происходит, когда указывается одновременно несколько URL в командной строке. Однако, квота начинает работать во время рекурсивной выборки или с использованием входного файла. Поэтому вы можете спокойно набрать "wget -Q2m -i sites" и быть уверенным в том, что выгрузка будет прервана по превышению квоты.

Установка квоты в "0" или "inf" снимает ограничение.


Опции работы с каталогами

-nd
--no-directories

Не создавать иерархию каталогов во время рекурсивной выборки. При использовании этой опции, все получаемые файлы будут сохраняться в текущем каталоге без разрушения (если имя файла будет встречаться более одного раза, то имена файлов будут расширяться суффиксом ".n").

-x
--force-directories

В противоположность "--no-directories" иерархия каталогов будет создаваться даже если ни один из них не был бы создан иначе. Например, "wget -x http://fly.cc.fer.hr/robots.txt" приведет к сохранению файла в "fly.cc.fer.hr/robots.txt".

-nH
--no-host-directories

Отключить создание каталогов с именами сайтов. По умолчанию запуск Wget с "-r http://fly.cc.fer.hr/" приведет к созданию иерархии подкаталогов в каталоге "fly.cc.fer.hr/". Эта опция отменяет такое поведение.

--cut-dirs=КОЛИЧЕСТВО

Игнорировать указанное КОЛИЧЕСТВО компонентов каталогов. Применима для точного контроля над создаваемой иерархией во время рекурсивной выборки.

Возьмем к примеру каталог "ftp://ftp.xemacs.org/pub/xemacs/". Если выборка делается с "-r", то данные будут локально сохранены в "ftp.xemacs.org/pub/xemacs/". В то время как "-nH" может удалять часть "ftp.xemacs.org/", однако вы споткнетесь на "pub/xemacs". Это тот момент, когда "--cut-dirs" становится полезной. Она заставляет Wget "не видеть" указанное КОЛИЧЕСТВО компонентов каталога. Ниже несколько примеров как "--cut-dirs" работает.

нет опций  -  ftp.xemacs.org/pub/xemacs/
-nH  -  pub/xemacs/
-nH --cut-dirs=1  -  xemacs/
-nH --cut-dirs=2  -  .
--cut-dirs=1  -  ftp.xemacs.org/xemacs/
...  -  

Если вы всего лишь хотите отделаться от каталогов, то эта опция подобна комбинации "-nd" и "-P". Однако, в отличие от "-nd", "--cut-dirs" не теряет подкаталоги, к примеру, с "-nH --cut-dirs=1" подкаталог "beta/" будет помещен в "xemacs/beta", как это и ожидалось.

-P ПРЕФИКС
--directory-prefix=ПРЕФИКС

Задает ПРЕФИКС для имен всех создаваемых файлов и каталогов. Фактически указывает каталог, в котором будут размещаться получаемые файлы и каталоги. По умолчанию "." (текущий каталог).


Опции HTTP

--http-user=ИМЯ
--http-passwd=ПАРОЛЬ

Определяет ИМЯ пользователя и ПАРОЛЬ для доступа к HTTP серверу. В соответствии с типом запроса авторизации Wget будет использовать либо "basic" (не защищенную), либо "digest" (защищенную) схему авторизации.

Другим способом задания имени пользователя и пароля является их непосредственное указание в URL (см. "Формат URL"). Дополнительная информация по вопросам безопасности доступна в разделе "Вопросы безопасности".

-C on/off
--cache=on/off

Когда отключено (off), дезактивирует кэширование на стороне сервера. В этом случае Wget будет передавать удаленному серверу соответствующую директиву ("Pragma: no-cache") с целью получения файла от удаленной службы, а не его кэшированной версии. Это применимо в особенности для получения и обновления устаревших документов на прокси серверах.

По умолчанию кэширование разрешено.

--ignore-length

К сожалению некоторые HTTP сервера (CGI программы, если быть точным) посылают некорректную информацию в заголовке "Content-Length", что "бесит" Wget, так как он думает, что не весь документ был получен. Вы можете "вылечить" это синдром если Wget начнет повторять запрос одного и того же документа снова и снова, каждый раз мотивируя это тем, что не все данные получены на одном и том же месте.

С этой опцией Wget будет игнорировать заголовок "Content-Length" как бут-то его вообще не существовало.

--header=ДОПОЛНИТЕЛЬНЫЙ-ЗАГОЛОВОК

Задает ДОПОЛНИТЕЛЬНЫЙ-ЗАГОЛОВОК для передачи его HTTP серверу. Заголовки должны содержать ":" с предшествующим одним или более не пробельным символом и не должны содержать символа новой строки.

Вы можете задавать более одного заголовка неоднократным использованием "--header".

wget --header='Accept-Charset: koi8-r' \
     --header='Accept-Language: ru'    \
       http://www.debian.org/

Определение заголовка как пустой строки приведет к очищению всех ранее заданных заголовков.

--proxy-user=ИМЯ
--proxy-passwd=ПАРОЛЬ

Определяет ИМЯ пользователя и ПАРОЛЬ для авторизации на прокси сервере. Wget кодирует их использую "basic" схему авторизации.

-s
--save-headers

Сохранять HTTP заголовки передаваемые сервером в файле, отделяя их от актуального содержимого пустой строкой.

-U ИДЕНТИФИКАТОР-АГЕНТА
--user-agent=ИДЕНТИФИКАТОР-АГЕНТА

Представляться HTTP серверу как ИДЕНТИФИКАТОР-АГЕНТА.

Протокол HTTP позволяет программе-клиенту идентифицировать себя используя поле заголовка "User-Agent". Это позволяет программному обеспечению WWW серверов различать клиентов, обычно для статистических целей или с целью отслеживания нарушений протокола. Нормально Wget идентифицируется как "Wget/ВЕРСИЯ", где ВЕРСИЯ - текущий номер версии Wget.

Однако на некоторых сайтах используется политика модификации содержимого в зависимости от типа клиента определяемого по полю "User-Agent". В большинстве это не плохая идея, но существуют сервера отказывающие в доступе к информации клиентам отличным от "Mozilla" или "Internet Explorer". Эта опция позволяет изменить поле "User-Agent" используемое Wget. Использование данной опции не желательно без крайней на то необходимости.

ЗАМЕТИМ, что Netscape Communications Corp. заявляет, что ложные передачи "Mozilla" как "User-Agent" нарушает их авторские права. НЕ ПРЕДСТАВЛЯЙТЕ Wget как Mozilla.

-B URL
--base=URL

Определяет базу для относительных URL, т.е. работает аналогично HTML тегу <base href="URL">. Все относительные ссылки в HTML документе будут разрешаться в абсолютные с использованием указанного в аргументе опции значения. Данная опция применима, когда для указания списка выгружаемых файлов используется входной файл в формате HTML задаваемый через опцию "--input-file".


Опции FTP

--retr-symlinks

Получать символьные ссылки на FTP сайтах как обычные файлы, т.е. не создавая локальных ссылок.

-g on/off
--glob=on/off

Включить (on) или выключить (off) глобирование FTP. Глобирование значит, что вы можете использовать специальные символы, подобные тем, что используются в оболочках, называемые шаблонными, к которым относятся "*", "?", "[" и "]", для получения более чем одного файла из того же каталога одной операцией, например:

wget ftp://gnjilux.cc.fer.hr/*.msg

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

Возможно вам понадобится заключать URL в кавычки для того чтобы исключить обработку шаблонных символов оболочкой. Глобирование принуждает Wget запрашивать список каталога, который зависит от удаленной системы. По этой причине это в данный момент работает только с FTP серверами на базе ОС семейства UNIX и тех, что корректно эмулируют выполнение команды "ls".

--passive-ftp

Использовать пассивную схему получения данных с FTP, в которой клиент инициирует соединение передачи данных. Это часто необходимо для получения FTP доступа из-за брандмауэра.


Опции рекурсивной выгрузки

-r
--recursive

Включить рекурсивную выгрузку. Подробности смотрите в разделе "Рекурсивная выгрузка".

-l ГЛУБИНА
--level=ГЛУБИНА

Определение максимальной ГЛУБИНЫ рекурсии. Умалчиваемое значение 5.

--delete-after

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

wget -r -nd --delete-after http://whatever.com/~popular/page/

Здесь: "-r" - выбирать рекурсивно, "-nd" - не создавать каталоги.

-k
--convert-links

Конвертировать абсолютные ссылки в относительные локально. Преобразование будет выполнено только для для ссылок на документы, которые действительно были выгружены, остальные ссылки будут оставлены как есть.

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

-m
--mirror

Включить опции необходимые для операции зеркалирования. К этим опциям относятся: рекурсия (-r), контроль дат модификации (-N), неограниченная рекурсия (-l inf) и сохранение списков FTP каталогов (-nr).

-nr
--dont-remove-listing

Не удалять временные файлы списков (".listing") FTP каталогов генерируемые при FTP выгрузке. Обычно эти списки содержат полный перечень содержимого каталогов, полученный с FTP сервера. Сохранение этих файлов может быть полезно для доступа к полному списку удаленных файлов при запуске зеркалирования или для отладки.


Опции выборки при рекурсии

-A ACCLIST --accept ACCLIST
-R REJLIST --reject REJLIST

Определяет разделяемый запятыми список суффиксов имен файлов или шаблонов имен подлежащих выгрузке (ACCLIST) или игнорируемых при выгрузке (REJLIST). Дополнительная информация доступна в разделе "Типы файлов".

-D СПИСОК-ДОМЕНОВ
--domains=СПИСОК-ДОМЕНОВ

Определить домены, которые должны быть приняты и проверены в DNS, где СПИСОК-ДОМЕНОВ это список доменов разделенных запятыми. Заметим, что эта опция не включает "-H". Данная опция приводит к ускорению работы даже если обрабатывается только один хост. (См. "Доменная избирательность").

--exclude-domains СПИСОК-ДОМЕНОВ

Исключить, разделенный запятыми, СПИСОК-ДОМЕНОВ из процедуры проверки DNS. (См. "Доменная избирательность").

-L
--relative

Переходить только по относительным ссылкам. Применимо для выгрузки специфичной домашней страницы не отвлекаясь на остальное, даже на страницы того же хоста. (См. Относительные ссылки).

-f
--follow-ftp

Переходить по FTP ссылкам в HTML документах. Без этой опции Wget будет игнорировать все FTP ссылки.

-H
--span-hosts

Разрешить межхостовые переходы при рекурсивной выгрузке. (См. "Все хоста").

-I СПИСОК
--include-directories=СПИСОК

Задает разделяемый запятыми СПИСОК каталогов, который необходимо обработать при выполнении рекурсивной выгрузки. (См. "Ограничения на уровне каталогов"). Элементы могут содержать шаблоны.

-X СПИСОК
--exclude-directories=СПИСОК

Задает разделяемый запятыми СПИСОК каталогов, которые необходимо исключить из обработки при выполнении рекурсивной выгрузки. (См. "Ограничения на уровне каталогов"). Элементы могут содержать шаблоны.

-nh
--no-host-lookup

Дезактивировать требовательные ко времени запросы к службе DNS при разрешении IP адресов для всех хостов. (См. "Проверка хостов").

-np
--no-parent

Не переходить в родительские (верхние) каталоги при рекурсивной выгрузке. Это полезная функция, поскольку она гарантирует, что только файлы и каталоги лежащие ниже указанной иерархии будут выгружены. (См. "Ограничения на уровне каталогов").


  1. В современной практике это сейчас правильнее называть URI - Universal Resource Identificator (универсальный идентификатор ресурса, который является над-классом URL. (прим. переводчика)
  2. Если вы имеете файл ".netrc" в вашем домашнем каталоге, то Wget попытается извлечь пароль для доступа оттуда.




ФОБОС: погода в г.Тольятти