.$redefine CHAPTER=typ .$redefine SECTION=wget .$redefine TITLE=Программа wget .+ section.inchtml .$redefine SEC_JUMPER=^(RELS_PTN find,mtools) .+ section_begin.inchtml ^(|BEGIN_PAGE Что такое wget)

^(H_PROG:Wget) -- это программа для "вытягивания" файлов из Internet при помощи протоколов HTTP или FTP.

Основные достоинства ^(H_PROG:Wget):

^(H_PROG:Wget) выдает список всех опций при вызове с ключом ^(H_TYPE:--help), причем поскольку выдача довольно длинная, лучше пользоваться командой ^(QUOTE_CMD wget --help | less)

Для того, чтобы узнать все возможности ^(H_PROG:Wget), следует заглянуть в info-документацию по нему. ^(END_PAGE) ^(|BEGIN_PAGE Использование)

Поскольку у ^(H_CMD:wget) есть огромное количество ключей, модифицирующих его поведение, мы рассмотрим на примерах несколько наиболее часто используемых случаев. ^(|SUBPAGE Простое скачивание файла)

В самом простом случае программе указывается один параметр URL -- ссылка на файл, который надо получить: ^(BEGIN_EXAMPLE) bobby:~/soft% wget ftp://rdist.inp.nsk.su/pub/Linux/redhat-5.2/i386/dosuti ls/lodlin16.tgz --15:23:43-- ftp://rdist.inp.nsk.su:21/pub/Linux/redhat-5.2/i386/dosutils /lodlin16.tgz => `lodlin16.tgz' Connecting to rdist.inp.nsk.su:21... connected! Logging in as anonymous ... Logged in! ==> TYPE I ... done. ==> CWD pub/Linux/redhat-5.2/i386/dosutils ... done. ==> PORT ... done. ==> RETR lodlin16.tgz ... done. Length: 87,210 (unauthoritative) 0K -> .......... .......... .......... .......... .......... [ 58%] 50K -> .......... .......... .......... ..... [100%] 15:23:43 (604.01 KB/s) - `lodlin16.tgz' saved [87210] bobby:~/soft% _ ^(END_EXAMPLE)

При скачивании каждого килобайта отображается один символ ^(H_TYPE:.).

Можно указать подряд несколько URL -- в этом случае файлы будут скачаны один за другим. ^(|SUBPAGE Скачивание при плохой связи)

Для того, чтобы ^(H_CMD:wget) повторял попытки взять файл до тех пор, пока не скачает его целиком, надо указывать ключи ^(H_TYPE:-c) и ^(H_TYPE:-t 0). Первый означает "продолжать качать с того места, где соединение оборвалось" (continue), а второй позволяет указать число попыток, 0 -- бесконечно.

Например, чтобы скачать исходные тексты проигрывателя .mp3-файлов X11Amp, можно воспользоваться командой ^(QUOTE_CMD wget -c -t 0 http://www.x11amp.bz.nu/files/x11amp-0.9-beta1.1.tar.gz)

Реально ключи ^(H_TYPE:-c -t 0) стоит указывать практически всегда, кроме как разве что в локальной сети. ^(|SUBPAGE Шаблоны)

При перекачке по FTP можно в именах файлов указывать шаблоны (естественно, "закавычивая" их). Например, команда ^(QUOTE_CMD wget 'ftp://rdist.inp.nsk.su/pub/Linux/redhat-5.2/updates/i386/XFree86*.rpm') скачает все обновления к системе XFree86. ^(|SUBPAGE Рекурсивное скачивание)

Для рекурсивного скачивания используются ключи ^(H_TYPE:-r), ^(H_TYPE:-l) и ^(H_TYPE:-np). Ключ ^(H_TYPE:-r) (recursive) включает рекурсивность. Ключ ^(H_TYPE:-l) (level) позволяет указать насколько "глубоко" программа должна следовать по ссылкам; 0 -- бесконечно глубоко, по умолчанию установлено 5. И, наконец, ключ ^(H_TYPE:-np) (no parent) запрещает следовать ссылкам выше указанной директории.

При рекурсивном скачивании ^(H_CMD:wget) автоматически создает соответствующее дерево директорий.

К примеру, следующая команда могла бы использоваться для скачивания целого домашнего сайта (адрес вымышленный): ^(QUOTE_CMD wget -r -l 0 -np http://www.h-hosts.com/users/goofy/)

При этом файлы будут помещаться в директорию ^(H_PATH:./www.h-hosts.com/users/goofy/). ^(BEGIN_NOTE) ^(H_PROG:Wget), будучи культурной программой, при рекуррентном скачивании уважает т.н. "Протокол Web-роботов", и может пропускать часть файлов (запрещенных в файле ^(H_PATH:robots.txt) на сервере). Чтобы отключить эту "культурность", можно воспользоваться ключом ^(H_TYPE:-e robots=off).

Почитать про Протокол Web-роботов можно в info-документации по ^(H_PROG:Wget), воспользовавшись командой ^(QUOTE_CMD info wget appendices robots) или по адресу ^(QUOTE_URL http://info.webcrawler.com/mak/projects/robots/robots.html) ^(END_NOTE) ^(|SUBPAGE Фоновый режим)

При указании ключа ^(H_TYPE:-b) (background) программа сразу переходит в фоновый режим, так что пользователь может заниматься другими делами или даже выйти из системы -- ^(H_CMD:wget) будет продолжать свою работу.

При сообщения, которые выдавались бы на экран, будут идти в файл ^(H_PATH:wget.log) (а если он уже есть, то в ^(H_PATH:wget.log.1), ^(H_PATH:wget.log.2) и т.д.).

Пример: ^(BEGIN_EXAMPLE) bobby:~/soft% wget -b http://www.mit.edu/afs/sipb/user/xiphmont/cdpa ranoia/download/cdparanoia-III-alpha9.5.src.tgz Continuing in background. Output will be written to `wget-log'. bobby:~/soft% _ ^(END_EXAMPLE)

Для просмотра log-файла по мере скачивания удобно пользоваться командой ^(H_TYPE:tail -f): ^(BEGIN_EXAMPLE) bobby:~/soft% tail -f wget-log --16:16:45-- http://www.mit.edu:80/afs/sipb/user/xiphmont/cdparanoia/down load/cdparanoia-III-alpha9.5.src.tgz => `cdparanoia-III-alpha9.5.src.tgz' Connecting to www.mit.edu:80... connected! HTTP request sent, awaiting response... 200 OK Length: 92,595 [application/octet-stream] 0K -> .......... .......... .......... .......... .......... [ 55%] 50K -> ..._ ^(END_EXAMPLE) ^(|SUBPAGE Использование прокси-серверов)

^(H_PROG:Wget) умеет пользоваться прокси-серверами как для HTTP, так и для FTP. Достаточно перед вызовом программы присвоить адрес прокси-сервера переменным окружения ^(H_PATH:http_proxy) или ^(H_PATH:ftp_proxy) соответственно (имена маленькими буквами!).

^(H_PROG:Wget) понимает как "официальное" указание адреса, так и сокращенное. Поэтому команды ^(QUOTE_CMD export http_proxy=http://proxy.nsc.ru:8080/) и ^(QUOTE_CMD export http_proxy=proxy.nsc.ru:8080) эквивалентны. ^(|SUBPAGE Скачивание "через перевалочную базу")

Современные академгородковские реалии таковы, что зачастую скачать файл с некоего зарубежного сервера напрямую не удается из-за плохой связи. При этом иногда не помогает даже способность ^(H_PROG:Wget) к докачке.

Можно обойти эту проблему, если есть доступ (по telnet, rlogin или ssh) к unix-эккаунту где-нибудь за рубежом, где связь намного лучше.

При этом выполняются следующие действия:

  1. При помощи ^(H_PROG:Wget) файл скачивается на зарубежную машину. Естественно, ^(H_PROG:Wget) на ней должен быть установлен. Если нет, то не является проблемой скомпилировать его из исходных текстов (см. пример в разделе "Установка программ из исходных текстов").
  2. Там его стоит упаковать, если это еще не сделано (а .html-файлы пакуются очень хорошо), и, возможно, разбить на несколько более мелких файлов про помощи программы ^(H_PROG:split).
  3. Затем такой упакованный и/или разбитый файл скачивается с зарубежной машины к себе при помощи ^(H_PROG:Wget) по FTP или HTTP.

Такой подход дает б^(ACCENT:о)льшую гибкость по сравнению с прямой перекачкой, а уменьшение размера кусочков, на которые разбивается файл, иногда позволяет достичь необходимой надежности. ^(BEGIN_WARNING) Пользоваться таким приемом можно только в том случае, если это не нарушает политики, принятой в тех учреждениях, которых это касается. ^(END_WARNING) ^(END_PAGE) .+ section_end.inchtml