day & night

Что такое wget, Краткий FAQ
Дата обновления: , перейти к новому сообщению
#1
~karlson~



*nix`оид
[SoftoRooMTeaM] Group Icon

Группа: Модераторы
Сообщений: 1.878
Регистрация: 6.06.2006
Из: Чернигов
Пользователь №: 555


Респектов: 726
-----XXXX-




Что такое wget?


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

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

* Wget -- неинтерактивная программа, что позволяет запускать ее в фоновом режиме или при помощи at.
* Wget может выкачивать файлы "рекурсивно", т.е. автоматически следовать по "ссылкам". Это позволяет, например, скачивать web-страницы вместе с имеющимися в них картинками, или выкачивать по FTP целые директории вместе с содержимым (включая поддиректории).
* Wget умеет "докачивать" файлы после обрыва соединений, что особо ценно при медленной или нестабильной связи (хорошим примером которой является ситуация в Академгородке в настоящий момент).

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

Code
wget --help | less


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

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


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

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

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

Code
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, можно воспользоваться командой

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


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

Шаблоны

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

Code
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 автоматически создает соответствующее дерево директорий.

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

Code
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, воспользовавшись командой

Code
info wget appendices robots


или по адресу

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


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

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

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

Пример:

Code
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":

Code
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 понимает как "официальное" указание адреса, так и сокращенное. Поэтому команды

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


и

Code
export http_proxy=proxy.nsc.ru:8080


эквивалентны.

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

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

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

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

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

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


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


User is offline
Go topGo end
 

Ответов(1 - 2)
22.11.2008 - 22:45
#2
GenaNekii



Новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 22.11.2008
Пользователь №: 1.177.252


Респектов: 0
----------


Предупреждений: 1


Спасибо давно искал ман на русском языке! smile.gif
User is offline
Go topGo end
10.01.2009 - 21:15
#3
proBEARkin



Специалист
Group Icon

Группа: Наши Люди
Сообщений: 432
Регистрация: 23.09.2006
Пользователь №: 233.770


Респектов: 34
-----X----




Основной принцип - делать одну вещь, но хорошо (http://ru.wikipedia.o...илософия_UNIX)
Оболочки для него:
KGet (часть KDE)
Gwget (часть GNOME)
aria2 — для командной строки, поддерживает HTTP, FTP, BitTorrent, и файлы Metalink 3.0.
D4X (Downloader for X)
Во многих дистрах по-умолчанию в установке - обновлении стоит curl , однозначно поменять на wget .
User is offline
Go topGo end

Topic Options
Сейчас: 24.04.2024 - 20:43
Мобильная версия | Lite версия