Ну вот мы и добрались до самого интересного - применения 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 для выгружаемых файлов по одному 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'
, в котором будут находиться все
выгруженные файлы.