Wget - насос для Интернета


Разрешите представить - Wget!
Вообще говоря, это еще одна программа для скачивания всякого добра из глобальной сети Интернет, но,.. но как говаривают в Одессе: "это что-то особенного!" Пользователям UNIX подобных систем представлять эту программу не нужно, она им хорошо знакома и используется "на полную катушку", а вот в мире ОС MS Windows она почти неизвестна. На этой платформе более популярны программы вроде Go!Zilla, ReGet и им подобные. А я вам так скажу: "если вы не пользовались Wget, значит вы никогда не качали". Почему? Да потому, что Wget умеет это делать по-настоящему, что не мудрено, поскольку он был изначально создан на UNIX платформе, где коммуникации - главная задача. Один мой знакомый, являющийся пользователем Windows, которому я однажды порекомендовал Wget, описывая свои ощущения от использования этой программы сказал: "Там, где GetRight уже отдыхает, Wget, пусть и со скоростью 20 байт/с, но ТАЩИТ!"
Как существуют самонаводящиеся ракеты класса "запустил и забыл", так и Wget можно назвать программой класса "запустил и забыл".
Как-то сложилось исторически, что программное обеспечение с UNIX систем почти не переносилось на платформу MS Windows, а вместо этого разрабатывался "свой новый" софт. С моей точки зрения, из-за этого пользователи данной платформы много потеряли. К счастью сия доля Wget не коснулась и благодаря Тиму Чаррону, который проделал большую работу по переносу Wget на Windows платформу, пользователи этой ОС могут оценить возможности одной из UNIX программ - Wget.
Собственно использованию Wget под Windows и посвящена данная статья, однако почти все здесь сказанное применимо и для канонической версии Wget.
Возможности
Wget представляет из себя утилиту управляемую командной строкой. Если для кого-то это является недостатком, то с моей точки зрения это наоборот достоинство для программы подобного класса. Когда вы нанимаете на работу носильщика вам не интересна эстетичность его физиономии, а больше занимает какой вес и как долго он может носить. Если вам необходима симпатичная мордашка, то наймите секретаршу. Однако я сильно сомневаюсь, что она будет в состоянии принести вам что-то большее, чем папку с бумагами. Благодаря тому, что у Wget "междумордие" (interface) отсутствует как класс, программа занимает значительно меньше пространства на вашем диске и, что более важно, меньше отжирает оперативной памяти во время своей работы. Кроме того, интерфейс программной строки позволяет легко создавать сценарии упрощающие и автоматизирующие выполнение каких-либо однотипных действий. Например, такие сценарии очень удобно запускать из планировщика, скажем, в ночное время с целью синхронизации данных с удаленного сайта с данными на локальном диске.
Wget создавался как универсальный инструмент для получения файлов из Интернет и он полностью отвечает своему предназначению. Его возможности простираются от скачивания отдельно взятого файла, до операции зеркалирования (mirroring), т.е. создания локальной точной копии удаленного сайта. Все это работает как для протокола FTP, так и для протокола HTTP. Поддерживается автоматическая докачка файлов с момента обрыва, процесс получения которых был прерван до его завершения в результате потери соединения. При выполнении операции зеркалирования Wget автоматически выполняет сравнение уже существующих на локальном диске файлов и каталогов с файлами и каталогами на скачиваемом сайте докачивая только разницу. Поддерживается работа через прокси и из-за фильтрующего брандмауэра. Поддерживается эмуляция конкретно заданного броузера, что позволяет представить Wget для WWW сервера, с которым он работает, как, скажем, Netscape Communicator или Internet Explorer. А так же многое, многое другое.
Еще одним немаловажным достоинством программы является то, что она распространяется по лицензии GNU и поэтому совершенно бесплатная.
Установка
Скопируйте архив wgetwin-1_5_3_1-binary.zip к себе на локальный диск из любого приведенного в ссылках источника и распакуйте его. Из всех файлов в архиве вам нужен только wget.exe. Остальные файлы вам понадобятся в случае если вы соберетесь сами откомпилировать программу из ее исходников. Данная операция выходит за рамки темы статьи и я ее описывать не буду, все необходимое вы сможете узнать из файла readme.wget-windows и на домашней странице автора.
Скопируйте файл wget.exe в какой-нибудь каталог, который доступен через переменную окружения PATH. Например, непосредственно в каталог Windows, обычно это C:WINDOWS. Удобно для программ представляющих из себя единственный исполняемый файл, как сам Wget или, скажем, утилиты архивации, создать отдельный каталог, к примеру, C:BIN и задать доступ к нему в переменной окружения PATH. Делается это в файле C:AUTOEXEC.BAT, в котором должна содержаться строка примерно такого содержания:
SET PATH=C:WINDOWS;C:WINDOWSSYSTEM;C:BIN;
Если вы внесли изменения в AUTOEXEC.BAT, то необходимо перегрузить Windows, чтобы эти изменения возымели силу. Доступность каталогов через переменную окружения PATH полезна тем, что позволяет запускать программы находящиеся в них непосредственно из командной строки просто по имени программы независимо от текущего каталога.
Теперь желательно создать конфигурационный файл для Wget. Сильной необходимости в нем нет, но его наличие позволит упростить использование самой программы. Шаблонный файл конфигурации можете взять здесь. Главной прелестью программного обеспечения UNIX подобных систем является то, что оно использует обычные текстовые конфигурационные файлы, что сильно облегчает настройку. Структура файла очень проста. Строки начинающиеся с символа '#' являются комментарием и игнорируются программой. Конфигурационные параметры имеют структуру:
имя_параметра = значение
Внутри файла wgetrc вы найдете комментарии по поводу значения всех приведенных там аргументов, однако ими не исчерпываются параметры конфигурации Wget, полный список которых вы сможете найти в "Руководстве пользователя".
Отредактируйте обычным текстовым редактором, например, notepad.exe этот файл в соответствии с вашими нуждами, следуя комментариям приведенным в нем. Теперь нужно правильно разместить этот файл так, чтобы Wget смог его находить автоматически и использовать указанные в нем значения. У вас есть две возможности:
Установить переменную среды окружения WGETRC, которая содержит в себе полный путь доступа к данному файлу. В этом случае файл может иметь любое имя.
Установить переменную среды окружения HOME указывающую на какой-либо каталог, в котором разместить данный файл под именем 'wgetrc'.
Как и в случае с путем доступа переменные среды окружения необходимо прописывать в файле AUTOEXEC.BAT. Для первого и второго случая строки в AUTOEXEC.BAT должны выглядеть подобно ниже приведенным.
SET WGETRC=C:BINWGETRC
SET HOME=C:HOME

Примеры использования
Ну вот мы и добрались до самого интересного - применения Wget на практике. Ради чего, собственно, все это и затевалось. Начнем с самого простого.
Выгрузка отдельного файла
Как уже упоминалось ранее, Wget является утилитой управляемой командной строкой, поэтому всю необходимую информацию ему необходимо передавать через нее в момент запуска программы. Для упрощения работы, с целью постоянного доступа к командной строке, откройте окно "Сеанс MS-DOS". В данном случае в командной строке необходимо указать URI требуемого для выгрузки файла. Например, для того чтобы выгрузить архив со справочным файлом Wget в формате MS Windows Help, URI которого приведен в ссылках, командная строка будет иметь вид:
wget http://www.sunsite.auc.dk/wget/wgethelp.zip
Обратите внимание на обязательность указания в URI префикса протокола выгрузки, в данном случае это http://. Этот префикс необходим Wget для определения типа протокола для доступа к ресурсу. После того как вы нажмете клавишу Enter, Wget начнет выгрузку и вы увидите в окне примерно следующее.
--23:53:22-- http://www.sunsite.auc.dk:80/wget/wgethelp.zip
=> `wgethelp.zip'
Connecting to www.sunsite.auc.dk:80... connected!
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://sunsite.auc.dk/wget/wgethelp.zip [following]
--23:53:23-- http://sunsite.auc.dk:80/wget/wgethelp.zip
=> `wgethelp.zip'
Connecting to sunsite.auc.dk:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 80,656 [application/zip]

0K -> .......... .......... .......... .......... .......... [ 63%]
50K -> .......... .......... ........ [100%]

23:53:49 (3.38 KB/s) - `wgethelp.zip' saved [80656/80656]


FINISHED --23:53:49--
Downloaded: 80,656 bytes in 1 files
Здесь в начале идет шапка описывающая процесс соединения с ресурсом из которой хорошо видно, что при доступе к URI http://www.sunsite.auc.dk/wget/wgethelp.zip удаленный сервер дал команду перенаправления для Wget (301 Moved Permanently), выполняя которую Wget переключился на другой ресурс - http://sunsite.auc.dk/wget/wgethelp.zip. Здесь произошел успешный доступ (200 OK), Wget получил информацию о размере и типе выгружаемого файла и приступил к выгрузке. Процесс самой выгрузки отображается точками, где каждая точка - это 1 Кбайт полученных данных. Точки объединяются в блоки по 10 Кбайт, соответственно каждая строка - это 50 Кбайт, а в конце каждой строки Wget выводит общее количество уже полученных данных в процентном соотношении от полного размера файла. По завершении получения файла Wget выдает строку в которой указано время завершения процесса, средняя скорость получения данных, а так же ожидаемый и реально полученный их размер. Последние две строки содержат информацию о всем процессе выгрузки и представляют интерес, когда производится получение более одного файла за сессию. Чем, собственно, мы теперь и займемся.
Выгрузка нескольких файлов
Для выполнения этой операции существует два способа:
Перечислить URI всех файлов подлежащих выгрузке последовательно в командной строке, разделив их пробелами. Этот способ пригоден для получения двух, максимум трех-четырех файлов. Для большего количества он не удобен, а чаще всего и не пригоден из-за существующего в Windows (DOS) ограничения на длину командной строки.
Передать Wget список необходимых файлов через внешний файл.
Второй способ представляет наибольший интерес, поскольку не накладывает совершенно никаких ограничений на количество выгружаемых файлов. Формат файла списка чрезвычайно прост. Это обычный текстовый файл, в котором перечисляются URI для выгружаемых файлов по одному URI на каждую строку. Например, чтобы выгрузить справочные файлы Wget в формате 'GNU info' (это обычный текст со специальной разметкой) со страницы "WGET software for FTP and Web Auto-mirroring" индексный файл должен иметь следующую структуру.
http://www.ccp14.ac.uk/mirror/wgetinf0.txt
http://www.ccp14.ac.uk/mirror/wgetinf1.txt
http://www.ccp14.ac.uk/mirror/wgetinf2.txt
http://www.ccp14.ac.uk/mirror/wgetinf3.txt
Если файл с таким содержимым сохранить в текущем каталоге под именем 4wget, то командная строка запуска Wget будет иметь вид:
wget -i 4wget
Здесь ключ "-i" сообщает Wget, что URI для извлекаемых данных следует читать из файла 4wget. Слегка забегая вперед отмечу, что в качестве индексного файла можно использовать и файлы в формате HTML, что удобно когда, скажем, перечень необходимых нам файлов уже содержится на описывающей их WWW странице.
После запуска Wget нажатием клавиши Enter, вывод Wget будет иметь следующий вид.
--00:49:11-- http://www.ccp14.ac.uk:80/mirror/wgetinf0.txt
=> `wgetinf0.txt'
Connecting to www.ccp14.ac.uk:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 2,588 [text/plain]

0K -> .. [100%]

00:49:13 (15.80 KB/s) - `wgetinf0.txt' saved [2588/2588]

--00:49:13-- http://www.ccp14.ac.uk:80/mirror/wgetinf1.txt
=> `wgetinf1.txt'
Connecting to www.ccp14.ac.uk:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 52,101 [text/plain]

0K -> .......... .......... .......... .......... .......... [ 98%]
50K -> [100%]

00:49:36 (2.37 KB/s) - `wgetinf1.txt' saved [52101/52101]

--00:49:36-- http://www.ccp14.ac.uk:80/mirror/wgetinf2.txt
=> `wgetinf2.txt'
Connecting to www.ccp14.ac.uk:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 39,691 [text/plain]

0K -> .......... .......... .......... ........ [100%]

00:49:46 (4.54 KB/s) - `wgetinf2.txt' saved [39691/39691]

--00:49:46-- http://www.ccp14.ac.uk:80/mirror/wgetinf3.txt
=> `wgetinf3.txt'
Connecting to www.ccp14.ac.uk:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 28,634 [text/plain]

0K -> .......... .......... ....... [100%]

00:49:52 (7.55 KB/s) - `wgetinf3.txt' saved [28634/28634]


FINISHED --00:49:52--
Downloaded: 123,014 bytes in 4 files
Фактически отчет о работе идентичен ранее приведенному, за исключением того, что состоит из четырех операций выгрузки, соответственно количеству выгружаемых файлов. Последние две строки здесь показывают время завершения работы, общий объем полученных данных и количество файлов.
Как видно из приведенного примера, Wget предоставляет быстрый и удобный способ для выгрузки большого количества файлов за одну операцию. Однако как быть в случае если нам, скажем, необходимо получить копию WWW страницы или вообще сайта? В данном приложении описанный способ не удобен или вообще не пригоден. Здесь-то мы и подошли к наиболее интересному аспекту применения Wget.
Зеркалирование
Это наиболее полезная и мощная возможность Wget. Операция зеркалирования позволяет получить на локальном диске копию WWW страницы или сервера. Хотя работа выполняемая Wget в данном случае более сложна, чем в предыдущих примерах, однако запуск самой операции не намного более сложен.
Для запуска операции нам понадобится URI корня удаленной страницы или сервера. Рассмотрим это на примере получения копии страницы "Auto-Mirrored Web/FTP Sites", компонентом которой является ранее упомянутая страница "WGET software for FTP and Web Auto-mirroring". Ее URI - http://www.ccp14.ac.uk/mirror/. Однако в HTML документах страницы существует несколько ссылок на архивы которые нас не интересуют, и поэтому желательно их исключить из операции выгрузки. Команда для выполнения этой операции будет следующей.
wget -m -np -R "*.tar.*" http://www.ccp14.ac.uk/mirror/
Здесь: '-m' - команда выполнения операции зеркалирования; '-np' - команда разрешающая Wget следовать только вниз по дереву каталогов при переходе по ссылкам внутри документа; '-R "*.tar.*"' - команда исключения всех файлов попадающих под маску "*.tar.*". Выполнив команду вы увидите процесс выгрузки подобный приведенному в предыдущем примере. По завершению процесса в каталоге, откуда был запущен Wget, вы найдете новый подкаталог 'www.ccp14.ac.uk', а под ним каталог 'mirror', в котором будут находиться все выгруженные файлы.

Обзор
GNU Wget - это свободно распространяемая утилита для выгрузки файлов из World Wide Web с использованием протоколов HTTP (протокол передачи гипертекста) и FTP (протокол передачи файлов), являющихся двумя наиболее широко используемыми в Интернете протоколами. Wget имеет много полезных возможностей способствующих облегчению процесса выгрузки, к которым относятся:
Wget не интерактивен, а это значит, что он может работать в фоне даже в то время, когда пользователь не находится в системе. Это позволяет вам запустить процесс выборки данных и отключится от системы, позволив Wget довершить остальное. В противоположность этому, большинство WWW броузеров требуют от пользователя постоянного присутствия, что представляет большие затруднения при перекачке значительных размеров данных.
Wget способен рекурсивно спускаться по структуре HTML документов и деревьям каталогов FTP, создавая локальную копию идентичную иерархии удаленного сервера. Эта возможность применима для создания зеркальных копий архивов и домашних страниц или для прочесывания вэб пространства в поисках данных подобно WWW роботу. В этом обличии Wget понимает соглашение "norobots".
При выгрузке данных через FTP доступны обработка имен файлов по шаблону и рекурсивное зеркалирование каталогов. Wget умеет считывать информацию о времени создания (модификации) файла, предоставляемую HTTP и FTP серверами, и сохранять ее локально. Поэтому Wget может может распознавать какие файлы изменились с момента последнего доступа и автоматически выполнять их выгрузку. Это делает Wget применимым для зеркалирования FTP сайтов и домашних страниц.
Wget исключительно хорошо работает на медленных или неустойчивых соединениях повторя попытки выгрузки документа до тех пор пока он не будет получен или не будет исчерпано, определяемое пользователем, максимальное количество попыток. В случаях разрыва соединения до момента полного получения файла, Wget будет пытаться продолжить передачу с момента обрыва, используя методы "REST" для FTP и "Range" для HTTP, если удаленный сервер их поддерживает.
Wget по умолчанию поддерживает использование прокси серверов, которые позволяют снизить загрузку сети, повысить скорость выборки данных и предоставляют доступ из-за брандмауэров. Однако, если вы находитесь за брандмауэром, то это может потребовать использования шлюза класса socks. С этой целью вам буден необходимо взять библиотеку поддержки socks и пересобрать с ней Wget. Кроме этого, Wget так же, как опцию, поддерживает FTP выгрузку в пассивном режиме.
Имеется встроенный механизм позволяющий осуществлять точную подстройку типов ссылок, которым Wget должен следовать.
Процесс выгрузки динамически отображается выводом точек, где каждая точка представляет фиксированный объем полученных данных (по умолчанию 1 Кбайт). Это представление может быть изменено по вашему предпочтению.
Большинство возможностей полностью настраиваемые либо через аргументы командной строки, либо через инициализационный файл ".wgetrc". Wget позволяет вам использовать глобальный конфигурационный файл (по умолчанию /usr/local/etc/wgetrc) для определения общих для всей системы установок.
И наконец, GNU Wget - свободно распространяемое программное обеспечение. Это значит, что каждый может использовать его, распространять и/или модифицировать в соответствии с лицензией "GNU General Public License" опубликованной "Free Software Foundation".

Запуск
Обычно 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".
В современной практике это сейчас правильнее называть URI - Universal Resource Identificator (универсальный идентификатор ресурса, который является над-классом URL. (прим. переводчика)
Если вы имеете файл ".netrc" в вашем домашнем каталоге, то Wget попытается извлечь пароль для доступа оттуда.

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

Рекурсивная выгрузка
GNU Wget в состоянии прочесывать вэб-пространство или единичный HTTP или FTP сервер, углубляясь в структуру каталогов при переходе по ссылкам. Это называется рекурсивной выгрузкой или просто рекурсией.
При указании HTTP URL Wget выгружает документ и обрабатывает его HTML код. Встречая в нем ссылки "href" или "src", Wget извлекает указанные в ссылках данные. Если эти данные оказываются вновь формата HTML они так же обрабатываются. Таким образом процесс повторяется снова и снова.
Максимальная глубина, которой может достигать рекурсивная выгрузка, определяется опцией "-l". Умалчиваемой глубиной рекурсии являются пять уровней.
При рекурсивной выгрузке данных из FTP URL Wget выгружает с удаленного сервера все данные из указанного каталога, включая подкаталоги с глубиной вложения вплоть до указанной, создавая зеркальную их копию локально. FTP выгрузка так же ограничивается параметром глубины рекурсии.
По умолчанию Wget создает локальное дерево каталогов идентичное тому, что существует на удаленном сервере.
Рекурсивная выгрузка может найти множество применений наиболее важным из которых является зеркалирование. Она также полезна для организации WWW презентаций и иных приложений где требуется обход медленных сетевых соединений путем сохранения данных локально.
Необходимо предупредить вас, что запуск рекурсивной выгрузки может привести к серьезной нагрузке для вашей системы по причине быстрой обмены данными через сеть, что может сказаться на работе других пользователей. Это же касается удаленных серверов для которых осуществляется зеркалирование. Чем больше они получают запросов, тем выше их загрузка.
Неосторожная выгрузка, кроме того, может привести к незапланированному переполнению вашей файловой системы, что потенциально ведет к возможному отказу вашей системы.
Загрузка может быть минимизирована уменьшением максимальной глубины рекурсии ("-l") или уменьшением количества повторений ("-t"). Кроме того, возможно, вы пожелаете воспользоваться опцией "-w" для замедления запросов к удаленной системе, впрочем, как и некоторыми опциями для ограничения количества обрабатываемых ссылок (см. "Следование ссылкам").
Рекурсивная выгрузка это полезная функция при правильном использовании. Пожалуйста примите к сведению все предупреждения, чтобы не натворить бед по причине безрассудства.

Следование ссылкам
При рекурсивной выгрузке возникает желание не выгружать ненужные данные. Большинству пользователей хотелось бы выгружать именно то, что необходимо, поэтому возникает желание, чтобы Wget следовал только определенным ссылкам.
Например, если вы желаете выгрузить музыкальный архив с сервера "fly.cc.fer.hr", то вы не желаете вместе с ним получить все домашние страницы, на которые могут быть ссылки внутри выгружаемого архива.
Wget предоставляет несколько механизмов, которые позволяют вам осуществить точную настройку обрабатываемых ссылок.

Относительные ссылки
Если переход осуществляется только по относительным ссылкам (опция "-L"), рекурсивная выгрузка никогда не выполнит смену хоста. Продолжительные по времени запросы DNS не выполняются, поэтому скорость процесса будет высокой при минимальной нагрузке на сеть. Этого часто будет достаточно для ваших нужд, особенно в случае зеркалирования страниц являющихся результатом работы различного рода "x2html" фильтров, которые в основном генерируют относительные ссылки.
Проверка хостов
Недостаток обработки только относительных ссылок заключается в том, что люди часто перемешивают в пределах страницы или документа относительные и абсолютные ссылки на ту же страницу или тот же хост. В этом режиме, который является умалчиваемым, будут выгружены все URL, которые указывают на один хост.
Для этой опции проблематичным являются синонимы доменов и хостов. Поскольку не существует способа для Wget понять, что "regoc.srce.hr" и "www.srce.hr" - это один и тот же хост или, что "fly.cc.fer.hr" то же самое, что и "fly.cc.etf.hr". Поэтому, когда встречается абсолютная ссылка, то выполняется проверка хоста DNS запросом "gethostbyname" с целью выяснения не тот же самый ли этот хост. Однако, даже несмотря на то, что DNS запросы кэшируются, это приводит к заметному снижению производительности особенно при обработке больших индексов домашних страниц на различных хостах, поскольку каждый хост должен быть проверен через DNS на предмет того не является ли он синонимом для начального хоста.
Для избежания больших задержек возможно использование опции "-nh", которая отключает использование DNS и Wget сравнивает имена хостов посимвольно. Это может значительно ускорить процесс, но и сделать его значительно менее достоверным, потому что такие хоста как "www.srce.hr" и "regoc.srce.hr" будут рассматриваться как различные.
Заметим, что современные HTTP сервера позволяют использовать один IP адрес для нескольких виртуальных серверов, каждый из которых имеет свою собственную иерархию каталогов. Подобные сервера различаются по их именам хостов, хотя все они указывают на один и тот же IP. Чтобы все это работало клиент должен посылать заголовок "Host", что, собственно, Wget и делает. Однако в этом случае Wget не должен пытаться распознать "настоящий" адрес хоста или пытаться использовать подобные имена для доступа, т.е. "-nh" должен быть включен.
Иными словами, опция "-nh" должна использоваться при рекурсивной выгрузке с виртуальных серверов различаемых по именам хостов. Поскольку количество подобных серверов растет, в будущем, возможно, режим "-nh" станет умалчиваемым.
Доменная избирательность
При помощи опции "-D" вы можете определять имена доменов, которые будут обрабатываться. В этом случае DNS запросы для хостов, имена которых не принадлежат указанным доменам, выполняться не будут. Поэтому вы можете определить "-Dmit.edu" чтобы быть абсолютно уверенным, что ничего за пределами MIT просмотрено не будет. Это очень важно и полезно. Это так же значит, что "-D" не подразумевает "-H" (перемещение между хостами), которая должна определяться непосредственно. Использование данных опций позволяет увеличить скорость обработки одновременно с сохранением достоверности проверки для всех хостов. Поэтому вы можете выполнять
wget -r -D.hr http://fly.cc.fer.hr/
чтобы быть уверенным, что только хоста в домене ".hr" будут опрошены через DNS для проверки их идентичности с "fly.cc.fer.hr". Поэтому "fly.cc.etf.hr" будет проверен (только один раз!) и признан эквивалентным, а "www.gnu.ai.mit.edu" не будет проверен никогда.
Конечно доменная избирательность может быть использована для ограничения выгрузки в пределах определенного домена с одновременным обходом хостов в его пределах, но в этом случае необходимо явное использование опции "-H". Например:
wget -r -H -Dmit.edu,stanford.edu http://www.mit.edu/
Начнет работать с "http://www.mit.edu/" последовательно переходя по ссылкам в пределах MID и Stanford.
Если существуют домены, которые должны быть исключены, то вы можете проделать это опцией "--exclude-domains", которая принимает тот же тип аргументов, что и "-D", но будет исключать все перечисленные домены. Например, если у вас есть желание выгрузить все домены в пределах домена "foo.edu" исключив при этом "sunsite.foo.edu", то вы можете проделать следующее:
wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu http://www.foo.edu/
Все хоста
Когда определена опция "-H" без указания опции "-D", то обрабатываются все встречающиеся хоста. В этом случае полностью отсутствуют какие-то ни было ограничения на части сети, к которым Wget будет обращаться для получения документов, кроме максимальной глубины рекурсии. То есть если страница ссылается, скажем, на "www.yahoo.com", то он тоже будет обработан. Данная опция редко применима сама по себе.
Типы файлов
При выгрузке материалов с WWW вам часто будет необходимым ограничить выгружаемые данные определенными типами файлов. Например, если вы заинтересованы только в выгрузке GIF файлов, то вы не будете слишком обрадованы выгрузке документов Postscript и наоборот.
Wget предоставляет две опции для решения этой проблемы. Описание каждой опции приводит ее короткое имя, длинное имя и эквивалентную команду файла ".wgetrc".

-A ACCLIST
--accept ACCLIST
accept = ACCLIST
Аргументом (ACCLIST) опции является список суффиксов имен файлов или шаблонов определяющий что Wget будет выгружать во время рекурсии. Суффиксом здесь является завершающая часть имени файла и состоит из "нормальных" символов, например, "gif" или ".jpg". Шаблоны позволяют использовать мета-символы подобно шаблонам оболочки командной строки, например, "books*" или "zelazny*196[0-9]*".
Таким образом определение "wget -A gif,jpg" укажет Wget выгружать только файлы заканчивающиеся на "gif" или "jpg", т.е. графические файлы формата GIF или JPEG. С другой стороны, 'wget -A "zelazny*196[0-9]*"' будет выгружать только файлы с именами начинающимися с "zelazny" и содержащие числа от 1960 до 1969 далее в любом месте имени файла. За объяснением принципов функционирования шаблонов обратитесь к руководству на вашу оболочку.
Разумеется любое количество суффиксов и шаблонов может быть объединено в разделенный запятыми список и передано аргументом для "-A".

-R REJLIST
--reject REJLIST
reject = REJLIST
Данная опция работает аналогично опции "--accept", только ее логика является прямо противоположной. В этом случае Wget будет выгружать любые файлы за исключением тех, что попадают под суффиксы или шаблоны указанные в списке аргумента (REJLIST).
Таким образом, если вы хотите выгрузить со страницы все, исключая увесистые файлы MPEG и .AU, вы можете воспользоваться "wget -R mpg,mpeg,au". Аналогично, для выгрузки всех файлов исключая те, чье имя начинается на "bjork", воспользуйтесь 'wget -R "bjork*"'. Двойные кавычки в командной строке используются для того, чтобы оболочка командной строки сама не обрабатывала шаблон.
Опции "-A" и "-R" могут использоваться совместно для получения очень точного поведения при выгрузке. Например, 'wget -A "*zelazny*" -R .ps' приведет к выгрузке всех файлов содержащих "zelazny" как часть их имени, но исключая все Postscript файлы.
Заметим, что эти две опции не касаются выгрузки HTML файлов, Wget должен выгружать все HTML документы чтобы выяснять куда ему двигаться дальше, в противном случае рекурсивная выгрузка становится просто бессмысленной.
Ограничения на уровне каталогов
Независимо от других типов обработки ссылок часто бывает полезно установить ограничения на получаемые файлы на основе каталогов, в которых они расположены. Тому может быть много причин. Домашние страницы обычно организуются на уровне каталогов. Некоторые каталоги содержат бесполезную информацию, например "cgi-bin" или "/dev".
Wget предоставляет три опции для удовлетворения этих требований. Описание каждой опции приводит ее короткое имя, длинное имя и эквивалентную команду файла ".wgetrc".

-I СПИСОК
--include СПИСОК
include_directories = СПИСОК
Опция принимает разделенный запятыми СПИСОК каталогов, которые должны быть обработаны при выгрузке. Все остальные каталоги будут просто проигнорированы. Каталоги должны указываться как абсолютные.
Таким образом, если в хотите выгрузить данные с "http://host/people/bozo/", переходя только по ссылкам на коллег bozo в каталоге "/people", и глюковатые скрипты в "/cgi-bin", вы можете выполнить:
wget -I /people,/cgi-bin http://host/people/bozo/



-X СПИСОК
--exclude СПИСОК
exclude_directories = СПИСОК
Данная опция полностью противоположна "-I". Здесь СПИСОК - разделенный запятыми перечень каталогов, которые должны быть исключены из выгрузки. Например, если вы не хотите чтобы Wget выгружал данные из каталога "/cgi-bin", то просто укажите "-X /cgi-bin" в командной строке.
Подобно опциям "-A" и "-R", эти две опции могут быть использованы совместно для получения более точных результатов работы. Например, если вы хотите выгрузить все файлы из иерархии каталогов "/pub" за исключением каталога "/pub/worthless", то укажите "-I/pub -X/pub/worthless".

-np
--no-parent
no_parent = on

Простейший и наиболее часто используемый способ ограничения каталогов это запрет на обработку ссылок, которые указывают на иерархию находящуюся выше начального каталога, иными словами запрет на доступ к родительскому каталогу.
Опция "--no-parent" (сокращенно "-np") применима в этом случае. Ее использование гарантирует, что при выгрузке вы никогда не покинете существующую иерархию. Предположим, что вы запускаете Wget как:
wget -r --no-parent http://somehost/~luzer/my-archive/
То вы можете спокойно отдохнуть уверенными в том, что ни одна из ссылок на "/~his-girls-homepage/" или "/~luzer/all-my-mpegs/" не будет обработана, а будут выгружены только интересующие вас данные. В общем, опция "--no-parent" идентична "-I/~luzer/my-archive", за тем исключением, что она отрабатывает перенаправления более интеллектуальным образом.
FTP ссылки
Правила для FTP немного специфичны, то есть такие, какими они и должны быть. FTP ссылки в HTML документы включают чаще всего именно для ссылки, поэтому чаще всего нет никакой необходимости их обрабатывать по умолчанию.
Для того, чтобы FTP ссылки в HTML документе все же обрабатывались, существует опция "--follow-ftp". При ее указании будет производиться переход между хостами по FTP ссылкам независимо от опции "-H". Это логично, поскольку FTP ссылки почти никогда не указывают на тот же хост, где находится HTTP сервер. По этим же причинам опция "-L" не оказывает никакого влияния на такую выгрузку. С другой стороны, доменная избирательность (-D) и правила суффиксов (-A и -R) работают как обычно.
Отметим так же, что следование ссылкам на FTP каталоги не приведет к последующей рекурсивной выборке по ссылке.

Контроль времени модификации
Одним из наиболее важных аспектов зеркалирования информации из Интернета является обновление ваших архивов.
Периодическая полная выгрузка архива только из-за нескольких в нем изменений - неблагодарная операция, она пожирает пропускную способность канала, деньги и время требуемое на обновление. Вот почему утилиты зеркалирования предоставляют возможность наращиваемого обновления.
Подобный механизм обновления означает, что удаленный сервер проверяется на предмет появления на нем новых файлов. Только эти файлы будут выгружены в замен устаревших их локальных копий или в дополнение к существующим.
Файл рассматривается как новый если выполняется одно из следующих условий:
Файл с таким именем отсутствует в локальной системе.
Файл с таким именем уже существует, но время модификации у удаленного файла более позднее, чем у локального.
Для реализации этого программе требуется информация о времени модификации локального и удаленного файлов. Подобная информация называется временными штампами.
Временные штампы включаются в Wget опцией "--timestamping" ("-N") или посредством директивы "timestamping = on" в файле ".wgetrc". При этой опции для каждого файла предполагаемого к выгрузке Wget проверяет наличие локального файла с таким же именем. Если такой файл существует и время его модификации более раннее чем у удаленного файла, то Wget его выгружает.
Если локальный файл не существует или размеры локального и удаленного файла не совпадают, то Wget выполнит выгрузку удаленного файла не зависимо от того, что говорят временные штампы.
Использование временных штампов
Применение временных штампов простое. Скажем, вы хотите выгрузить файл таким образом, чтобы сохранить его дату модификации.
wget -S http://www.gnu.ai.mit.edu/
Простой вызов "ls -l" покажет, что временной штамп локального файла эквивалентен значению заголовка "Last-Modified", возвращаемого сервером. Отсюда вы видите, что временные штампы сохраняются локально даже без опции "-N"
Если несколько дней спустя вы захотите, чтобы Wget проверил удаленный файл на изменение и выгрузил его, если он изменился.
wget -N http://www.gnu.ai.mit.edu/
Wget запросит у сервера дату модификации файла. Если локальный файл не старее, то удаленный файл не будет выгружен. Однако, если удаленный файл более новый, то он будет выгружен обычным образом.
То же самое относится к FTP. Например:
wget ftp://ftp.ifi.uio.no/pub/emacs/gnus/*
"ls" покажет, что временные штампы установлены в соответствии с их состоянием на удаленном сервере. Перезапуск команды с опцией "-N" принудит Wget дополучить только те файлы, что были изменены.
При HTTP и FTP выгрузке Wget будет корректно устанавливать локальные временные штампы независимо от использования "-N" если, конечно, он сможет получить список для FTP каталога или заголовок "Last-Modified" для HTTP.
Если вы желаете зеркалировать GNU архив каждую неделю, то вам необходимо пользоваться следующей командой:
wget --timestamping -r ftp://prep.ai.mit.edu/pub/gnu/
Временные штампы HTML изнутри
Временные штампы для HTTP реализованы через использование заголовка "Last-Modified". Если вы желаете получить файл "foo.html" посредством HTTP, то Wget проверит существует ли локально файл "foo.html". Если такой файл отсутствует, то Wget выгрузит его безусловно.
Если файл существует локально, Wget сперва проверит локальный временной штамп (аналогично способу проверки через "ls -l"), а затем пошлет серверу запрос "HEAD" в расчете на получение информации об удаленном файле.
В полученном от сервера ответе будет проверен заголовок "Last-Modified" на предмет выяснения наиболее поздней модификации, т.е. какой из файлов новее. Если таковым является удаленный файл, то он будет выгружен, в противном случае Wget завершит операцию1.
Возможно, временные шаблоны HTTP должны быть реализованы с применением запроса "If-Modified-Since".
В качестве дополнительной проверки Wget будет просматривать поле заголовка "Content-length" и сравнивать размеры. Если они не совпадут, то удаленный файл будет выгружен обычным порядком не зависимо от того, что говорят временные штампы.
Временные штампы FTP изнутри
Теоретически временные штампы FTP работают так же как и HTTP, однако FTP не использует заголовки, отсюда информация о временных штампах может быть получена из списков каталогов.
Для каждого каталога, из которого будут выгружаться файлы, Wget выполняет команду "LIST" для получения списка файлов в каталоге. После этого он пытается проанализировать полученный список, предполагая, что он имеет формат UNIX команды "ls -l", с целью извлечения из него временных штампов. Остальное полностью подобно HTTP.
Предположение, что каждый список каталога соответствует по своему формату UNIX стилю, возможно, звучит настораживающе, однако на практике это не так, поскольку большинство не-UNIX FTP серверов используют "юниксоидный" формат списков потому, что большинство (все?) FTP клиентов их понимают. Принимая во внимание то, что RFC959 не определяет стандартного способа получения списка файлов, оставим все на временные шаблоны. Мы можем только надеяться, что будущие стандарты все же будут иметь такое определение.
Другим нестандартным решением является использование команды "MDTM", которая поддерживается некоторыми FTP серверами, включая популярный "wu-ftpd". Эта команда возвращает время модификации указанного файла. Возможно Wget будет поддерживать эту команду в будущем.

Конфигурационный файл
Поскольку вы уже знаете как изменить умалчиваемое поведение Wget через аргументы командной строки, вы, возможно, захотите сделать некоторые из таких изменений постоянными. Обычный способ для выполнения этого - создание конфигурационного файла ".wgetrc".
Кроме того что ".wgetrc" является "главным" инициализационным файлом для Wget, он предоставляет удобную возможность для сохранения в нем паролей. Поэтому Wget считывает и обрабатывает содержимое файла "$HOME/.netrc", только если находит его. Информацию о формате ".netrc" вы сможете найти в системном руководстве.
Wget считывает ".wgetrc" в момент запуска, распознавая определенный набор команд.
Расположение wgetrc
В момент запуска Wget сначала ищет "глобальный" инициализационный файл, обычно расположенный как "/usr/local/etc/wgetrc" (или с префиксом отличающимся от "/usr/local", если Wget не был установлен там), и считывает из него команды, если такие существуют.
После этого Wget ищет пользовательский инициализационный файл. Если установлена переменная среды окружения "WGETRC", то Wget попытается загрузить указываемый ей файл. Если это не удается, то больше никаких попыток не выполняется.
Если "WGETR" не установлена, то Wget пытается найти файл как "$HOME/.wgetrc".
Факт загрузки пользовательских установок после глобальных означает, что в случае столкновения значений установки пользовательского wgetrc перекрывают глобальные для системы (по умолчанию "/usr/local/etc/wgetrc"). Берегитесь злобные админы!
Синтаксис wgetrc
Синтаксис wgetrc прост:
имя_переменной = значение
"Имя переменной" может также называться командой. Действительные значения для разных переменных различны.
Команды нечувствительны к регистру символов и к знакам подчеркивания. Поэтому "DIr__PrefiX" и "dirprefix" - одна и таже команда. Пустые строки, строки начинающиеся с символа "#" и строки содержащие только пробельные символы игнорируются.
Команды, которые ожидают в качестве значения разделенный запятыми список, будут очищать этот список при передаче им пустого значения. Таким образом, если вы желаете сбросить список игнорирования определенный в глобальном "wgetrc" файле, вы это можете проделать следующим образом:
reject =
Команды wgetrc
Полный список команд приведен ниже. Запись после символа "=" определяет значение принимаемое командой. Это либо "on" или "off" для включения или выключения параметра (так же возможно использование "1" и "0"), соответственно, либо "STRING" означающая любую непустую последовательность символов, либо "N" определяющее положительное целое. Например, вы можете использовать "use_proxy = off" для отключения использования прокси серверов по умолчанию. Там, где это возможно, может применяться значение "inf" означающее бесконечность.
Большинство из команд имеет эквивалентные им опции командной строки (см. "Запуск") за исключением нескольких редко используемых параметров.

accept/reject = STRING
То же, что и "-A/-R" (см. "Типы файлов").

add_hostdir = on/off
Включить/выключить префикс имени хоста в именах файлов. "-nH" отключает это.

continue = on/off
Включить/выключить продолжение выгрузки. Соответствует "-c", которая включает это.

background = on/off
Включить/выключить выполнение в фоновом режиме. Тоже, что и "-b", которая включает это.

base = STRING
Установить базу для относительных URL, тоже, что и "-B".

cache = on/off
При установке в "off" запрещает кэширование на уровне сервера. (См. "-C").

convert links = on/off
Конвертировать локально абсолютные ссылки. Тоже, что и "-k". (См. "--cut-dirs").

cut_dirs = N
Игнорировать N компонентов удаленного каталога.

debug = on/off
Режим отладки. (См. "-d").

delete_after = on/off
Удалять после выгрузки. (См. "--delete-after").

dir_prefix = STRING
Вершина дерева каталогов. (См. "-P").

dirstruct = on/off
Создание структуры каталогов. Тоже, что и "-x" и "-nd" соответственно.

domains = STRING
Тоже, что и "-D" (См. "Доменная избирательность").

dot_bytes = N
Определяет количество байт "содержащихся" в точках, которые отображаются при выгрузке (по умолчанию 1024). Вы можете заканчивать значение суффиксами "k" или "m" для килобайтов и мегабайтов, соответственно. При помощи настройки точек вы можете подстраивать отображение по вашим нуждам или можете воспользоваться предопределенными стилями (см. опцию "--dot-style").

dots_in_line = N
Определяет количество точек выводимых в одной строке во время выгрузки (по умолчанию 50).

dot_spacing = N
Определяет количество точек в одном кластере (по умолчанию 10).

dot_style = STRING
Определяет стиль представления выгрузки аналогично опции "--dot-style".

exclude_directories = STRING
Определяет разделенный запятыми список каталогов, которые необходимо исключить из процесса выгрузки, аналогично "-X" (см. "Ограничения на уровне каталогов").)

exclude_domains = STRING
Тоже, что и "--exclude-domains" (см "Доменная избирательность").

follow_ftp = on/off
Следование FTP ссылкам из HTML документов, аналогично "-f".

force_html = on/off
Если установлена в "on" принуждает рассматривать входной файл как документ формата HTML, аналогична "-F".

ftp_proxy = STRING
Использовать "STRING" как FTP прокси сервер вместо значения определенного в окружении.

glob = on/off
Управление режимом глобирования, аналогично "-g".

header = STRING
Определить дополнительный HTTP заголовок, подобно "--header".

http_passwd = STRING
Установить HTTP пароль.

http_proxy = STRING
Использовать "STRING" как HTTP прокси вместо того, что определен в окружении.

http_user = STRING
Устанавливает имя HTTP пользователя.

ignore_length = on/off
Когда установлено в "on" приводит к игнорированию заголовка "Content-Length", аналогично "--ignore-length".

include_directories = STRING
Задает разделенный запятыми список каталогов, которые необходимо обработать во время выгрузки, аналогично "-I".

input = STRING
Определяет имя файла для получения списка обрабатываемых URL, аналогично "-i".

kill_longer = on/off
Расценивать данные, превышающие по длине значение определенное в заголовке "Content-Length", как некорректные (и повторить попытку их получения). Основное назначение - сохранить так много данных, на сколько это вообще возможно исходя из того, что размер удаленных данных равен или больше значения "Content-Length".

logfile = STRING
Определяет имя файла отчета, аналогично "-o".

login = STRING
Имя пользователя для доступа по FTP на дистанционную машину. Умалчиваемое значение "anonymous".

mirror = on/off
Управление режимом зеркалирования, аналогично "-m".

netrc = on/off
Включить (on) или выключить (off) обработку файла "netrc".

noclobber = on/off
Тоже, что и "-nc".

no_parent = on/off
Запретить выгрузку за пределами указанной иерархии каталогов, аналогично "--no-parent" (см. "Ограничения на уровне каталогов").

no_proxy = STRING
Определяет "STRING" как разделенный запятыми список доменов для которых не нужно использовать выгрузку через прокси вместо того, что определен в окружении.

output_document = STRING
Определяет имя выходного файла, аналогично "-O".

passive_ftp = on/off
Устанавливает пассивный режим FTP, аналогично "--passive-ftp".

passwd = STRING
Задает пароль для доступа к FTP сервису. Без этой установки по умолчанию используется ваш адрес электронной почты.

proxy_user = STRING
Устанавливает имя пользователя для авторизации на прокси сервере, подобно "--proxy-user".

proxy_passwd = STRING
Устанавливает пароль для авторизации на прокси сервере, подобно "--proxy-passwd".

quiet = on/off
Молчаливый режим, аналогично "-q".

quota = QUOTA
Определяет квоту на выгрузку. Полезна для использования в глобальном wgetrc. Когда квота определена, Wget остановит выгрузку в момент когда суммарный размер выгруженных данных станет равным либо больше ее. Квота может быть определена в байтах (по умолчанию), килобайтах (с добавлением "k") и мегабайтах (с добавлением "m"). Напрмер, "quota = 5m" устанавливает квоту в 5 мегабайт. Заметим, что глобальные установки могут быть перекрыты пользовательскими.

reclevel = N
Глубина рекурсии, аналогично "-l".

recursive = on/off
Разрешение рекурсии, аналогично "-r".

relative_only = on/off
Следование только относительным ссылкам, аналогично "-L" (см. "Относительные ссылки").

remove_listing = on/off
Когда установлена в "on", Wget будет удалять файлы полученных FTP листингов. Установка значения в "off" идентична "-nr".

retr_symlinks = on/off
Когда установлена в "on", Wget будет выгружать символьные ссылки как обычные файлы, аналогично "--retr-symlinks".

robots = on/off
Использовать (или нет) файл "/robots.txt" (см. "Роботы"). Убедитесь. что вы знаете, что делаете перед тем как изменять умалчиваемое значение (по умолчанию "on").

server_response = on/off
Печатать или нет HTTP и FTP ответы серверов, аналогично "-S".

simple_host_check = on/off
Тоже, что и "-nh" (см. "Проверка хостов").

span_hosts = on/off
Тоже, что и "-H".

timeout = N
Устанавливает время тайм-аута. Аналогично "-T".

timestamping = on/off
Управление временными штампами. Тоже, что и "-N" (см. "Контроль времени модификации").

tries = N
Установить количество попыток на URL. Тоже, что и "-t".

use_proxy = on/off
Использование прокси серверов. Тоже, что и "-Y".

verbose = on/off
Включить/выключить подробный отчет. Тоже, что и "-v"/"-nv".

wait = N
Ждать N секунд между запросами. Тоже, что и "-w".

Примеры
Примеры разделены на три секции, по понятности. Первая часть - руководство для начинающих. Вторая часть объясняет некоторые наиболее общие возможности программы. Третья часть содержит советы для администраторов систем-зеркал, а также наиболее сложные свойства (которые можно назвать извращенными).
Простое применение
Скажем, вы хотите выгрузить URL. Достаточно набрать:
wget http://fly.cc.fer.hr/
Результат будет примерно следующим:
--13:30:45-- http://fly.cc.fer.hr:80/en/
=> `index.html'
Connecting to fly.cc.fer.hr:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 4,694 [text/html]

0K -> .... [100%]

13:30:46 (23.75 KB/s) - `index.html' saved [4694/4694]


Но что произойдет если связь медленная, а файл длиннющий? Вероятнее всего соединение разорвется до момента получения файла, причем неоднократно. В этом случае Wget будет пытаться восстановить передачу до тех пор пока не выгрузит весь файл или не исчерпает все попытки (20 по умолчанию). Очень просто изменить количество попыток на 45 чтобы быть уверенным, что файл дойдет нормально:
wget --tries=45 http://fly.cc.fer.hr/jpg/flyweb.jpg


Теперь заставим Wget работать в фоновом режиме и выводить отчет в файл "log". Поскольку затруднительно набирать "--tries", то мы воспользуемся "-t".
wget -t 45 -o log http://fly.cc.fer.hr/jpg/flyweb.jpg &
Амперсанд в конце команды переводит Wget в фоновый режим. Для снятия ограничения на количество попыток можно воспользоваться "-t inf".


Использование FTP примитивно. Wget сам позаботится о имени пользователя и пароле.
$ wget ftp://gnjilux.cc.fer.hr/welcome.msg
--10:08:47-- ftp://gnjilux.cc.fer.hr:21/welcome.msg
=> `welcome.msg'
Connecting to gnjilux.cc.fer.hr:21... connected!
Logging in as anonymous ... Logged in!
==> TYPE I ... done. ==> CWD not needed.
==> PORT ... done. ==> RETR welcome.msg ... done.
Length: 1,340 (unauthoritative)

0K -> . [100%]

10:08:48 (1.28 MB/s) - `welcome.msg' saved [1340]


Если вы укажете каталог, Wget для начала получит список каталога, обработает его и преобразует в HTML. Попробуйте:
wget ftp://prep.ai.mit.edu/pub/gnu/
lynx index.html
Использование для опытных
Вам необходимо прочитать список URL из файла? Нет проблем:
wget -i file
Если вместо "file" вы укажете "-", то URL-и будут читаться со стандартного ввода.
Создание зеркального образа GNU WWW сайта (с точно такой же структурой каталогов) только с одной попыткой на документ и сохранением отчета в файле "gnulog":
wget -r -t1 http://www.gnu.ai.mit.edu/ -o gnulog


Получение первого уровня ссылок Yahho:
wget -r -l1 http://www.yahoo.com/


Получение index.html из "www.lycos.com" с выводом серверных заголовков:
wget -S http://www.lycos.com/


Сохранение заголовков сервера в файле
wget -s http://www.lycos.com/
more index.html


Получение первых двух уровней "wuarchive.wustl.edu" с сохранением их в "/tmp".
wget -P/tmp -l2 ftp://wuarchive.wustl.edu/


Вам необходимо выгрузить все GIF файлы из HTTP каталога. "wget http://host/dir/*.gif" не работает поскольку HTTP выгрузка не поддерживает глобирование. В этом случае воспользуйтесь:
wget -r -l1 --no-parent -A.gif http://host/dir/
Это слегка обходной вариант, но он работает. "-r -l1" означает рекурсивную выгрузку (см. "Рекурсивная выгрузка") с глубиной в один уровень. "--no-parent" означает, что ссылки на родительский каталог игнорируются (см. "Ограничения на уровне каталогов") и "-A *.gif" означает выгрузку только GIF файлов. '-A "*.gif"' тоже должно работать.
Предположим вы были в середине выгрузки, когда Wget был прерван. Теперь вы не хотите замещать уже существующие файлы. Тогда:
wget -nc -r http://www.gnu.ai.mit.edu/


Если вам необходимо закодировать ваше имя пользователя и пароль для HTTP или FTP, то используйте соответствующий синтаксис URL (см. "Формат URL").
wget ftp://hniksic:mypassword@jagor.srce.hr/.emacs


Если вам не нравится умалчиваемая визуализация выгрузки (1 Кбайт на точку, 10 точек в кластере, 50 точек в строке), то вы можете настроить ее через настройку точек (см. "Команды wgetrc"). Например, многим людям нравится двоичный стиль представления с 8 килобайтовыми точками и 512 килобайтовыми строками:
wget --dot-style=binary ftp://prep.ai.mit.edu/pub/gnu/README
Вы можете поэкспериментировать с другими стилями:
wget --dot-style=mega ftp://ftp.cdrom.com/ls-lR
wget --dot-style=micro http://fly.cc.fer.hr/
Чтобы сделать данные установки постоянными, поместите их в ваш ".wgetrc" так, как это было описано ранее (см. "Пример wgetrc").
Использование для гуру
Если вы хотите, чтобы Wget поддерживал зеркало страницы (или FTP каталога), воспользуйтесь "--mirror" ("-m"), что является сокращением для "-r -N". Вы можете запускать Wget из файла crontab, чтобы выполнять проверку сайта каждое воскресенье:
crontab
0 0 * * 0 wget -m ftp://ftp.xemacs.org/pub/xemacs/ -o /home/me/log


Возможно вам понадобится проделать тоже самое с чьей-то домашней страницей. Но у вас нет желания выгружать оттуда графику, вас интересует только HTML.
wget --mirror -A.html http://www.w3.org/


Как на счет выгрузки всех хостов близких к вам сетей? Это выглядит жутко медленным из-за DNS разрешения имен. Достаточно воспользоваться "-D" (см. "Доменная избирательность").
wget -rN -Dsrce.hr http://www.srce.hr/
Теперь Wget сможет корректно обнаружить, что "regoc.srce.hr" это тоже самое, что и "www.srce.hr", но даже не будет пытаться разбираться со ссылкой на "www.mit.edu".
У вас есть презентация и вы желаете превратить все эти тупые абсолютные ссылки в относительные? Воспользуйтесь "-k":
wget -k -r URL


Вам необходимо чтобы выгружаемые документы выдавались на стандартный вывод вместо записи их в файлы? OK, но Wget автоматически умолкнет (включить "--quiet"), чтобы избежать смешивания вывода Wget и получаемых документов.
wget -O - http://jagor.srce.hr/ http://www.srce.hr/
Вы также можете комбинировать две опции и создавать тем самым невероятные потоки для выгрузки удаленных документов:
wget -O - http://cool.list.com/ | wget --force-html -i -

Прокси сервера
Прокси - HTTP сервера специального назначения разработанные для передачи данных от удаленных серверов к локальным клиентам. Одно из типичных применений прокси - уменьшение сетевой нагрузки для пользователей находящихся за медленным соединением. Это достигается пропусканием всего HTTP и FTP трафика через прокси, который кэширует передаваемые данные. Когда вновь запрашивается кэшированный ресурс, прокси возвращает данные уже из кэша. Другим применением прокси является обеспечение выхода из закрытой локальной сети (из соображений безопасности) во внешние сети, в этом случае пользователи получают доступ к удаленным данным через авторизованный прокси.
Wget поддерживает прокси одновременно и для FTP и для HTTP. Стандартным способом задания расположения прокси, который понимает Wget, является использование следующих переменных среды окружения:

http_proxy
Эта переменная должна содержать URL прокси для HTTP соединений.

ftp_proxy
Эта переменная должна содержать URL прокси для FTP соединений. В большинстве случаев HTTP_PROXY и FTP_PROXY это один и тотже хост.

no_proxy
Эта переменная должна содержать разделенный запятыми список доменов или доменных расширений для которых прокси не должно использоваться. Например, если значение "no_proxy" установлено в ".mit.edu", то прокси не будет использован при получении документов из MIT.
В дополнение к переменным среды окружения, расположение прокси и его установки могут быть определены непосредственно из Wget.

`-Y on/off'
`--proxy=on/off'
`proxy = on/off'
Данная опция может быть использована для включения или выключения прокси. Поддержка прокси по умолчанию включена из предположения, что соответствующая переменная окружения установлена.

`http_proxy = URL'
`ftp_proxy = URL'
`no_proxy = STRING'
Эти переменные инициализационного файла позволяют вам перекрыть установки прокси определенные в окружении.
Некоторые прокси сервера требуют выполнения авторизации для их использования. Авторизация состоит из имени пользователя и пароля, которые должны быть посланы Wget. Для HTTP авторизации существует несколько схем ее реализации. Для прокси авторизации в данный момент реализована только схема "Basic".
Вы можете указывать ваши имя пользователя и пароль или через URL прокси, или через опции командной строки. Предположим, что прокси компании расположен на "proxy.srce.hr" с номером порта "8001", тогда расположение прокси с данными авторизации может быть задано как:
http://hniksic:mypassword@proxy.company.com:8001/
В качестве альтернативы определения имени пользователя и пароля для прокси вы можете использовать опции "proxy-user" и "proxy-password", а также их эквивалентные установки ".wgetrc" - "proxy_user" и "proxy_passwd".

Распространение
Подобно всем GNU утилитам, последняя версия Wget может быть найдена на главном архивном сайте GNU ftp://prep.ai.mit.edu/, а также на его зеркалах. Например, Wget 1.5.3 может быть найден как ftp://prep.ai.mit.edu/pub/gnu/wget-1.5.3.tar.gz.

Списки рассылки
Wget имеет свой собственный список рассылки wget@sunsite.auc.dk благодаря Карстену Сайгесену (Karsten Thygesen). Список рассылки ориентирован на дискуссии о возможностях Wget и вэба, сообщения о ошибках (тех, что вы считаете имеют интерес для публики) и анонсы. Добро пожаловать в подписку. Чем больше участников в списке, тем лучше!
Для подписки отправьте письмо на адрес wget-subscribe@sunsite.auc.dk В поле темы сообщения введите "волшебное" слово "subscribe". Отписка выполняется через адрес wget-unsubscribe@sunsite.auc.dk.
Список рассылки архивируется на http://fly.cc.fer.hr/archive/wget.

Извещение об ошибках
Вы можете свободно посылать сообщения об ошибках Wget на адрес <bug-wget@gnu.org>. Ошибки, которые вы думаете будут интересны широкой общественности могут быть отосланы копией в список рассылки <wget@sunsite.auc.dk>.
Перед тем как направлять отчет об ошибке, пожалуйста попытайтесь проследовать следующим простым советам.
Постарайтесь удостовериться, что состояние, с которым вы столкнулись, действительно ошибка. Если Wget "падает" - это ошибка. Если Wget действует не так как описано - это ошибка. Если он работает странно, но вы не уверены относительно того как он должен действовать, то, возможно, это тоже ошибка.
Постарайтесь повторить ошибку в как можно более простых условиях. Например, если Wget падает при "wget -rLl0 -t5 -Y0 http://yoyodyne.com -o /tmp/log", вы должны попытаться проверить будет ли он падать при более простом наборе опций.
Также, вероятней всего мне будет интересно содержимое вашего файла ".wgetrc", однако простой сброс его в отладочное сообщение в большинстве случаев плохая идея. Вместо этого вам желательно проверить повторится ли ошибка при устраненном ".wgetrc". Толко устранение ошибки в этом случае будет означать, что установки ".wgetrc" вызывают ошибку и вам необходимо отправить мне почтой соответствующие его части.
Пожалуйста запустите Wget с опцией "-d" и отправьте мне полученный отчет (или необходимые его части). Если Wget был скомпилирован без поддержки отладки, то пересобирите его. Значительно проще найти ошибку, когда существует поддержка отладки.
Если Wget падает, попытайтесь запустить его под отладчиком, например, "gdb 'какой wget' core" и набрать "where" для получения трассировки.
Наити, где существует ошибка, исправить и отослать мне заплаты. :-)

Переносимость
Поскольку Wget использует GNU Autoconf для сборки и конфигурации и не использует "специальные" ультра-мега-крутые возможности какого-либо UNIX-а, он должен нормально компилироваться (и работать) на большинстве UNIX платформ.
Различные версии Wget были скомпилированы и протестированы под многими типами UNIX систем включая: Solaris, Linux, SunOS, OSF (известный как Digital Unix), Ultrix, *BSD, IRIX и другие. Обратитесь к файлу "MACHINES" в дистрибутивном каталоге на предмет получения полного списка. Если вы откомпилировали Wget на платформе, которая не описана там, пожалуйста известите меня, чтобы я внес необходимые изменения.
Wget также должен собираться на других UNIX системах, которые не указаны в "MACHINES", если это не так, пожалуйста дайте мне знать.
Благодаря активному содействию соучастников данная версия Wget компилируется и работает на платформах Microsoft Windows 95 и Windows NT. Он был успешно скомпилирован при помощи MS Visual C++ 4.0, Watcom, и Borland C компиляторов, с использованием Winsock как сетевого ПО. На самом деле в нем искалечено несколько UNIX возможностей, но основной набор функций полностью работоспособен, поэтому он может служить подспорьем для людей застрявших на Windows. Заметим, что Windows порт не тестируется и не поддерживается мной. Все вопросы и проблемы должны быть направлены в список рассылки <wget@sunsite.auc.dk>, где люди занимающиеся поддержкой их просмотрят.

Сигналы
Поскольку предназначение Wget - работа в фоновом режиме, он перехватывает сигнал разрыва ("SIGHUP") и игнорирует его. Если вывод делался на стандартный вывод, то он перенаправляется в файл с именем "wget-log". Иначе "SIGHUP" просто игнорируется. Это обычная ситуация когда вы хотите перенаправить вывод Wget уже после момента его запуска.
$ wget http://www.ifi.uio.no/~larsi/gnus.tar.gz &
$ kill -HUP %% # Redirect the output to wget-log
Кроме описанного, Wget не пытается обрабатывать никакие другие сигналы никаким образом. "Ctrl-C", "kill -TERM" и "kill -KILL" будут одинаково завершать процесс Wget.

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

Роботы
Поскольку Wget в состоянии прочесывать вэб, то его сложно расценивать как одного из вэб "роботов". Поэтому Wget понимает RES (Robots Exclusion Standard - стандарт исключений для роботов) и может обрабатывать содержимое файлов "/robots.txt" используемых администраторами серверов для закрытия части их систем от блуждания по ним Wget.
Данная поддержка включается только во время рекурсивной выгрузки, но никогда не используется для первой страницы. Поэтому вы можете проделать:
wget -r http://fly.cc.fer.hr/
В первую очередь будет выгружен индекс для "fly.cc.fer.hr". Если Wget обнаружит что-то достойное выгрузки с этого хоста, то только тогда он загрузит информацию для роботов и после этого примет решение выгружать ссылки или нет. Файл "/robots.txt" обрабатывается только один раз на хост. Wget не поддерживает "META" тэг для роботов.
Описание стандарта исключений для роботов было написано и поддерживается Мартином Костером (Martijn Koster <m.koster@webcrawler.com>). С его разрешения я предоставляю (слегка модифицированную) текстовую версию RES.

Введение в RES
"WWW роботы" (называемые также "странниками" или "пауками") представляют собой программы, которые прочесывают множество документов в World Wide Web посредством рекурсивной выгрузки связанных ссылками страниц. За дополнительной информацией обратитесь к странице описания роботов.
В 1993 и 1994 годах было несколько случаев когда роботы посещали WWW сервера, где они были нежелательны по некоторым причинам. Иногда эти причины были чисто специфичными для роботов, например, отдельные роботы буквально затапливали своими огнестрельными запросами или периодически выгружали одни и теже файлы. В других случаях роботы прочесывали те части WWW серверов, которые не имели какой-либо применимости, например, очень глубокие виртуальные деревья, дублируемую информацию, временные данные или CGI скрипты с побочными эффектами, такие как скрипты опросники.
Данные инцинденты продемонстрировали необходимость в установке механизмов для WWW серверов, которые позволяли бы передать роботам информацию о частях серверов не подлежащих обработке. Этот стандарт описывает данную необходимость и необходимые решения.
Данный документ представляет собой результат соглашения от 30 Июня 1994 года на списке рассылки посвященном роботам ("robots@webcrawler.com"), между большинством авторов роботов и другими людьми заинтересованными в данном вопросе. Он также был открыт для обсуждения в списке рассылки "Technical World Wide Web" <www-talk@info.cern.ch>. Данный документ базируется на предшествовавшем ему черновике имевшим тоже название.
Это не официальный стандарт определенный в официальных стандартных рамках или владеемый какой-то коммерческой организацией. Он не насаждается кем-либо и нет никаких гарантий, что существующие и будущие роботы будут придерживаться его. Рассматривая это в общем виде, большинство авторов роботов обещали WWW сообществу защищать WWW сервера от нежелательного поведения их роботов.
Новейшая версия данного документа может быть получена с "http://info.webcrawler.com/mak/projects/robots/norobots.html".

Формат RES
Формат и семантика файла "/robots.txt" следующая:
Файл состоит из одной или более записей разделенных одной или несколькими пустыми строками (завершаемыми при помощи "CR", "CR/NL" или "NL"). Каждая запись содержит строки формата:
<поле>:<опциональный_пробел><значение><опциональный_пробел>
Имена полей не чувствительны к регистру символов.
Комментарии могут быть вставлены в файл с использованием соглашений UNIX оболочки класса "bourne": символ "#" означает, что предшествующий пробел (если есть) и все символы вплоть до конца строки игнорируются. Строки содержащие только комментарий игнорируются полностью и тем самым не индицируют границы записи.
Запись начинается с одной или нескольких строк "User-Agent", за которыми следуют одна или несколько запрещающих строк, что объяснено ниже. Нераспознанные заголовки игнорируются.
Наличие пустого файла "/robots.txt" не имеет какой-то определенной семантики и расценивается как его полное отсутствие, т.е. все роботы не рассматриваются как нежелательные.

Поле пользовательского агента
Значением поля "User-agent" является имя робота для которого запись описывает политику доступа.
Если в записи существует более одного поля "User-agent", такая запись описывает идентичную политику более чем для одного робота. В записи должно существовать как минимум одно поле.
Робот должен быть либерален при интерпретации этого поля. Рекомендуется сравнение на базе подстрок с игнорированием регистра без учета информации о номере версии.
Если значение поля "*", то такая запись описывает умалчиваемую политику доступа для любого робота, который не попадает пол любое другое из существующих определений. Использование нескольких таких записей в "/robots.txt" не разрешается.

Поле запрета
Значение этого поля описывает конкретный URL, который не должен обрабатываться. Это может быть как полный так и частичный путь. Любой URL, который начинается с этого значения, не должен быть выгружен. Например, "Disallow: /help" запрещает одновременно и "/help.htm", и "/help/index.html"; в то время как "Disallow: /help/" будет запрещать "/help/index.html", но разрешать "/help.html".
Любое пустое значение индицирует, что все URL могут быть выгружены. Как минимум одно запрещающее поле должно существовать в записи.

Примеры
Следующий пример файла "/robots.txt" определяет, что ни один робот не должен посещать любой URL начинающийся с "/cyberworld/map/" или с "/tmp/":
# robots.txt для http://www.site.com/

User-agent: *
Disallow: /cyberworld/map/ # Это бесконечное виртуальное URL пространство
Disallow: /tmp/ # это скоро исчезнет
Данный пример файла "/robots.txt" определяет, что ни один робот не должен посещать любые URL начинающиеся с "/cyberworld/map/", за исключением робота именующегося "cybermapper":
# robots.txt для http://www.site.com/

User-agent: *
Disallow: /cyberworld/map/ # Это бесконечное виртуальное URL пространство

# Cybermapper знает где можно ходить.
User-agent: cybermapper
Disallow:
Этот пример индицирует, что ни один робот не должен посещать данный сайт вообще:
# уходите
User-agent: *
Disallow: /

Вопросы безопасности
Вы должны знать, что при использовании Wget он передает по сети пароли в нешифрованном виде, что может представлять из себя проблему для безопасности. Здесь приведены основные ситуации и некоторые решения.
Пароли в командной строке видимы через использование "ps". Если это проблема, то избегайте использования паролей в командной строке. Для этой цели вы можете воспользоваться файлом ".netrc".
При использовании незащищенной "basic" схемы авторизации, пароли передаются открытым текстом через сеть, маршрутизаторы и шлюзы.
FTP пароли тоже никак не шифруются. В данный момент не существует хорошего решения этой проблемы.
В то время как при "нормальном" выводе Wget пытается скрыть пароли, отладочный отчет показывает их во всех формах. Эта проблема решается обычной осторожностью при посылке отладочных отчетов, даже если вы посылаете их мне.

Участники
Автором GNU Wget является Hrvoje Niksic <hniksic@srce.hr>. Однако его разработка никогда бы не была доведена до текущего состояния без помощи многих людей не зависимо от того предоставляли ли они отчеты об ошибках, делали предложения, заплаты или просто говорили "Спасибо!".
Особенные благодарности хочется выразить следующим людям (без какого-либо определенного порядка):
Karsten Thygesen--donated the mailing list and the initial FTP space.
Shawn McHorse--bug reports and patches.
Kaveh R. Ghazi--on-the-fly `ansi2knr'-ization.
Gordon Matzigkeit--`.netrc' support.
Zlatko Calusic, Tomislav Vujec and Drazen Kacar--feature suggestions and "philosophical" discussions.
Darko Budor--initial port to Windows.
Antonio Rosella--help and suggestions, plust the Italian translation.
Tomislav Petrovic, Mario Mikocevic--many bug reports and suggestions.
Francois Pinard--many thorough bug reports and discussions.
Karl Eichwalder--lots of help with internationalization and other things.
Junio Hamano--donated support for Opie and HTTP `Digest' authentication.
Brian Gough--a generous donation.
Следующие люди предоставляли заплаты, отчеты об ошибках и сборке, полезные предложения, услуги бета-тестирования, приятную почту и много-много других вещей, что сделали поддержку приятной:
Tim Adam, Martin Baehr, Dieter Baron, Roger Beeman and the Gurus at Cisco, Mark Boyns, John Burden, Wanderlei Cavassin, Gilles Cedoc, Tim Charron, Noel Cragg, Kristijan Conkas, Damir Dzeko, Andrew Davison, Ulrich Drepper, Marc Duponcheel, Aleksandar Erkalovic, Andy Eskilsson, Masashi Fujita, Howard Gayle, Marcel Gerrits, Hans Grobler, Mathieu Guillaume, Karl Heuer, Gregor Hoffleit, Erik Magnus Hulthen, Richard Huveneers, Simon Josefsson, Mario Juric, Goran Kezunovic, Robert Kleine, Fila Kolodny, Alexander Kourakos, Martin Kraemer, Simos KSenitellis, Tage Stabell-Kulo, Hrvoje Lacko, Dave Love, Jordan Mendelson, Lin Zhe Min, Charlie Negyesi, Andrew Pollock, Steve Pothier, Marin Purgar, Jan Prikryl, Keith Refson, Tobias Ringstrom, Juan Jose Rodrigues, Heinz Salzmann, Robert Schmidt, Toomas Soome, Sven Sternberger, Markus Strasser, Szakacsits Szabolcs, Mike Thomas, Russell Vincent, Douglas E. Wegscheid, Jasmin Zainul, Bojan Zdrnja, Kristijan Zimmer.
Извинения всем, кого я случайно забыл, и большая благодарность всем подписчикам списка рассылки Wget.

Копирование
GNU GENERAL PUBLIC LICENSE1
Version 2, June 1991
Copyright © 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
Copyright (C) 19YY NAME OF AUTHOR

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome
to redistribute it under certain conditions; type `show c'
for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright
interest in the program `Gnomovision'
(which makes passes at compilers) written
by James Hacker.

SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.

Ссылки
http://www.interlog.com/~tcharron/wgetwin.html - домашняя страница перенесенной под MS Windows версии wget.
http://www.interlog.com/~tcharron/wgetwin-1_5_3_1-binary.zip - архив Windows версии wget на домашней странице Тима Чаррона.
ftp://ftp.infopac.ru/pub/msdos/FTPclients/wgetwin-1_5_3_1-binary.zip - архив Windows версии wget на FTP сервере компании Инфопак (доступен только клиентам компании).
wgetrc.zip - архив с шаблонным файлом конфигурации для wget.
ftp://sunsite.auc.dk/pub/infosystems/wget/ - исходный код.
http://www.ccp14.ac.uk/mirror/wget.htm - WGET software for FTP and Web Auto-mirroring (сайт посвященный использованию wget).
http://www.sunsite.auc.dk/wget/wgethelp.zip - справочный файл по использованию wget в формате 'MS Windows Help'.

Обновлено: 13.03.2015