<< Предыдущий раздел | /\ Содержание | >> Следующий раздел

Что такое wget

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

Основные достоинства Wget:

Wget выдает список всех опций при вызове с ключом "--help", причем поскольку выдача довольно длинная, лучше пользоваться командой

wget --help | less

Для того, чтобы узнать все возможности Wget, следует заглянуть в info-документацию по нему.

Использование

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

Простое скачивание файла


В самом простом случае программе указывается один параметр URL -- ссылка на файл, который надо получить:

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% _

При скачивании каждого килобайта отображается один символ ".".

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

Скачивание при плохой связи


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

Например, чтобы скачать исходные тексты проигрывателя .mp3-файлов X11Amp, можно воспользоваться командой

wget -c -t 0 http://www.x11amp.bz.nu/files/x11amp-0.9-beta1.1.tar.gz

Реально ключи "-c -t 0" стоит указывать практически всегда, кроме как разве что в локальной сети.

Шаблоны


При перекачке по FTP можно в именах файлов указывать шаблоны (естественно, "закавычивая" их). Например, команда

wget 'ftp://rdist.inp.nsk.su/pub/Linux/redhat-5.2/updates/i386/XFree86*.rpm'
скачает все обновления к системе XFree86.

Рекурсивное скачивание


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

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

К примеру, следующая команда могла бы использоваться для скачивания целого домашнего сайта (адрес вымышленный):

wget -r -l 0 -np http://www.h-hosts.com/users/goofy/

При этом файлы будут помещаться в директорию ./www.h-hosts.com/users/goofy/.

Замечание
Wget, будучи культурной программой, при рекуррентном скачивании уважает т.н. "Протокол Web-роботов", и может пропускать часть файлов (запрещенных в файле robots.txt на сервере). Чтобы отключить эту "культурность", можно воспользоваться ключом "-e robots=off".

Почитать про Протокол Web-роботов можно в info-документации по Wget, воспользовавшись командой

info wget appendices robots
или по адресу

http://info.webcrawler.com/mak/projects/robots/robots.html

Фоновый режим


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

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

Пример:

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% _

Для просмотра log-файла по мере скачивания удобно пользоваться командой "tail -f":

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

Использование прокси-серверов


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

Wget понимает как "официальное" указание адреса, так и сокращенное. Поэтому команды

export http_proxy=http://proxy.nsc.ru:8080/
и

export http_proxy=proxy.nsc.ru:8080
эквивалентны.

Скачивание "через перевалочную базу"


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

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

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

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

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

Предупреждение
Пользоваться таким приемом можно только в том случае, если это не нарушает политики, принятой в тех учреждениях, которых это касается.


<< Предыдущий раздел | /\ Содержание | >> Следующий раздел