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".

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

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

Относительные ссылки - следование только относительным ссылкам.

Проверка хостов - следование ссылкам только того же хоста.

Доменная избирательность - проверки на основе списка доменов.

Все хоста - отсутствие ограничений на хоста.

Типы файлов - получение только определенных файлов.

Ограничения на уровне каталогов - получение только определенных каталогов.

FTP ссылки - следование FTP ссылкам.

Относительные ссылки

Если переход осуществляется только по относительным ссылкам (опция "-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 выполнит выгрузку удаленного файла не зависимо от того, что говорят временные штампы.

Использование временных штампов

Временные штампы HTML изнутри

Временные штампы FTP изнутри

Использование временных штампов

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

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".

Временные штампы 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 - места расположения различных wgetrc файлов.

Синтаксис wgetrc - описание синтаксиса файлов wgetrc.

Команды wgetrc - перечень доступных команд.

Пример wgetrc - реальный пример файла 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".

Пример wgetrc

Этот пример инициализационного файла идентичен вложенному в дистрибутив. Он разделен на две секции: первая для глобального использования (применима в глобальном инициализационном файле), вторая для для локального использования (применима для "$HOME/.wgetrc"). Будте аккуратны с вносимыми модификациями.

Заметим, что все строки закомментированы. Для того чтобы любая строка возымела действие необходимо удалить префикс "#" в начале строки.

###

### Пример конфигурационного файла wgetrc

###

## Вы можете использовать этот файл, чтобы изменить умалчиваемое поведение

## wget или для того, чтобы избежать перечисления большого количества

## аргументов в командной строке при вызове программы. Этот файл не содержит

## полный список конфигурационных элементов. Обратитесь к руководству

## чтобы узнать какие аргументы вы можете использовать здесь, а так же за

## более подробным их описанием.

## Для того чтобы wget.exe под Windows смог использовать значения определенные

## в этом файле, у вас есть две возможности:

##

## o Установить переменную среды окружения WGETRC, которая содержит в себе

## полный путь доступа к данному файлу. В этом случае файл может иметь

## любое имя.

## o Установить переменную среды окружения HOME указывающую на какой-либо

## каталог, в котором разместить данный файл под именем 'wgetrc'.

##

## Хотя данный файл разделен на два раздела: локальные и глобальные установки,

## это деление имеет функциональный смысл только на многопользовательских

## UNIX подобных системах. Для ОС Windows разделы чисто условны.

## Для использования любого из аргументов данного файла вам необходимо

## рас-комментировать его и при необходимости изменить значение.

## Глобальные установки. Полезны для определения параметров единых для

## всех пользователей системы в глобальном конфигурационном файле wget.

##

## Хорошо подумайте перед тем, как изменять их

## так как это может привести к ухудшению функциональности wget или

## даже привести к функционированию не соответствующему описанному

## в документации.

# Вы можете установить ограничение по объему принимаемых данных,

# например, для начинающих, указанием здесь значения максимального

# объема трафика, опционально завершаемого 'K' (килобайты) или

# 'M' (мегабайты). По умолчанию ограничение отсутствует.

#

#quota = inf

# Вы можете увеличить или уменьшить умалчиваемое количество попыток

# повтора операций выгрузки файла (по умолчанию 20).

#

#tries = 20

# Уменьшение максимальной глубины рекурсивной выборки помогает

# обезопасить начинающих пользователей от черезмерного углубления

# при выкачки, когда они необдуманно запускают рекурсивный процесс

# скачивания (по умолчанию 5).

#

#reclevel = 5

# Многие системы находятся за фильтрующим брандмауэром, который не

# позволяет инициировать соединения извне. В этом случае необходимо

# использование пассивного режима FTP. Если вы находитесь за подобным

# брандмауэром, вы можете включить (on) эту опцию, чтобы wget использовал

# пассивный режим FTP по умолчанию.

#

#passive_ftp = off

## Локальные установки для пользователя, определяемые в его локальном

## пользовательском конфигурационном файле wget. Крайне не желательно

## размещать данные аргументы в глобальном конфигурационном файле так

## как они потенциально опасны для обычных пользователей.

##

## Даже если вы устанавливаете локальный конфигурационный файл, вы должны

## точно знать, что вы делаете и отдавать себе отчет в этих действиях.

# Включите (on) этот параметр чтобы использовать контроль времени создания

# файла.

#

#timestamping = off

# Обычно это хорошая идея сделать так, чтобы wget сообщал ваш почтовый

# адрес в поле заголовка "From:" ваших запросов. Это позволит системному

# администратору удаленного сайта связаться с вами в случае возникновения

# ошибок. Wget по умолчанию не посылает эту информацию.

#

#header = From: Ваше_имя <имя_ящика@имя.домена>

# Вы можете так же определять и другие заголовки запросов, как этот

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

# По умолчанию этот параметр не посылается, но будет полезным указать

# умалчиваемым языком русский.

#

#header = Accept-Language: ru

# Вы можете указать HTTP прокси сервер для использования его wget по умолчанию.

# Этот параметр перекрывает значение задаваемое переменной среды окружения.

#

#http_proxy = http://имя.хоста.прокси:прокси_порт/

# Если вы вообще не хотите использовать прокси, установите этот параметр в

# значение off.

#

#use_proxy = on

# Вы можете задавать внешний вид индикации процесса выгрузки файлов,

# Применимыми значениями являются: default, binary, mega и micro.

#

#dot_style = default

# Отключение этого аргумента (off) заставляет wget не выкачивать файлы

# /robots.txt. Перед тем как изменять умалчиваемое значение убедитесь,

# что вы точно знаете что это такое и для чего нужны эти файлы.

#

#robots = on

# Иногда необходимо чтобы wget делал паузу перед установкой соединения.

# Установите это значение в требуемое количество секунда задержки.

#

#wait = 0

# Вы можете принудительно заставить wget создавать иерархию каталогов

# доступа к файлу даже при выгрузке одного файла, установкой данного

# параметра в on.

#

#dirstruct = off

# Этим параметром можно задать wget использовать рекурсивную выгрузку

# по умолчанию, установив его в значение 'on'. Не делайте этого если вы

# не полностью уверены что это значит.

#

#recursive = off

# Для того чтобы wget переходил по FTP ссылкам в HTML документе по умолчанию

# установите данный аргумент в 'on'.

#

#follow_ftp = off

Простое применение

Скажем, вы хотите выгрузить 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

Получение первого уровня ссылок Yahoo:

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://ftp.gnu.org/, а также на его зеркалах. Например, Wget 1.5.3 может быть найден как ftp://ftp.gnu.org/pub/gnu/wget/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 %% # перенаправить вывод в wget-log

Кроме описанного, Wget не пытается обрабатывать никакие другие сигналы никаким образом. "Ctrl-C", "kill -TERM" и "kill -KILL" будут одинаково завершать процесс 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 пытается скрыть пароли, отладочный отчет показывает их во всех формах. Эта проблема решается обычной осторожностью при посылке отладочных отчетов, даже если вы посылаете их мне.

Обновлено: 13.03.2015