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

Примеры использования

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

Выгрузка нескольких файлов

Для выполнения этой операции существует два способа:

  1. Перечислить URI всех файлов подлежащих выгрузке последовательно в командной строке, разделив их пробелами. Этот способ пригоден для получения двух, максимум трех-четырех файлов. Для большего количества он не удобен, а чаще всего и не пригоден из-за существующего в Windows (DOS) ограничения на длину командной строки.
  2. Передать 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', в котором будут находиться все выгруженные файлы.

[< предыдущая] [содержание] [следующая >]

Последнее изменение: Monday, 02-Jul-2001 02:28:35 SAMST