next up previous contents
Next: 13.8 Использование серверов прокси Up: 13. Программа Wget Previous: 13.6 Конфигурационный файл .wgetrc

Подраздел


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

Примеры разбиты на три части, которые совершенно очевидны по своим названиям.

13.7.1 Простые примеры

Предположим, вы хотите скопировать на свою машину удал©нный файл, с определ©нным URL. Тогда просто печатайте:
wget http://www.cern.ch
Ответ будет примерно таким:
11:09:55>bash>pcfarm>wget http://www.cern.ch 
--11:10:03--  http://www.cern.ch:80/
           => `index.html'
Connecting to proxy.pnpi.spb.ru:81... connected!
Proxy request sent, awaiting response...
Иными словами, запрос послан.

А вот что происходит, когда канал не работает более часа. В запросе было указано, что новую попытку чтения следует делать через один час -w1h.

dbserv: 11:48 /usr/users/shevel > wget -Yoff -w1h http://www.cern.ch
--11:48:48--  http://www.cern.ch:80/
           => `index.html'
Connecting to www.cern.ch:80... 
connect: Connection timed out
Retrying.

--12:50:03--  http://www.cern.ch:80/
  (try: 2) => `index.html'
Connecting to www.cern.ch:80... 
connect: Host is unreachable
Retrying.

--13:51:17--  http://www.cern.ch:80/
  (try: 3) => `index.html'
Connecting to www.cern.ch:80... connected!
HTTP request sent, fetching headers... done.
Length: unspecified [text/html]

    0K -> .........

13:51:38 (533.79 B/s) - `index.html' saved [10165]

А что произойд©т, если соединение с удал©нным сервером очень медленное, а файл велик по размеру? Естественно, что во время передачи соединение может быть потеряно. Если соединение будет потеряно до того, как будет закончено копирование файла, то Wget попытается возобновить копирование. По умолчанию делается 20 попыток. Вы можете установить сво© значение.
wget -tries=45 http://www.cern.ch

Наконец, вы можете запустить Wget в фоновом режиме и направить вывод в протокольный файл log.
wget -t 45 -o log http://fly.cc.fer.hr/jpg/flyweb.jpg &
Как мы помним -t означает то же самое, что -tries. Если вы желаете установить неограниченное число повторов, то используйте -t inf.

Использование FTP также очень просто.
wget ftp://ftp.desy.de/ls-lR

Если вы укажете не отдельный файл, а каталог, то Wget скопирует оглавление каталога и преобразует его в документ вида HTML, который запишет в ваш рабочий каталог под именем index.html.

13.7.2 Более сложные примеры

Например, у вас есть список URL, которые вам надо скопировать из Интернет. Допустим, список находится в файле URL_list, тогда
wget -i URL_list
выполнит вашу задачу. А если вы укажете - (знак минус) вместо имени файла, то Wget будет читать список URL со стандартного устройства ввода.

Вы можете создать зеркальную копию сервера GNU с одной попыткой чтения каждого документа и записью всего, что происходило за время копирования в файл gnulog:
wget -r -t1 http://www.gnu.ai.mit.edu/ -o gnulog
Вы можете скопировать первый уровень всех линков с хоста http://www.yahoo.com/:
wget -r -l1 http://www.yahoo.com/
Если вы, кроме того, захотите видеть на экране все заголовки, то используйте
wget -r -l1 -S http://www.yahoo.com/

Если вы пожелаете записать все заголовки в начале файлов, которые вы копируете, то это делается так:
wget -s http://www.lycos.com/
more index.html
В файле index.html в начале будут заголовки, которые послал сервер.

Другая задача. Скопировать первые два уровня документов, сохранив их в каталоге /tmp
wget -P/tmp -l2 ftp://wuarchive.wustl.edu/

Допустим, вам необходимо скопировать все PDF файлы с удал©нного сервера. В этом случае команда
wget http://host/dir/*.pdf
не будет работать, поскольку HTTP протокол не поддерживает подобное расширение им©н файлов. В этом случае, вы должны использовать:
wget -r -l1 -no-parent -A.pdf http://host/dir/
Комбинация параметров -r -l1 означает рекурсивный поиск с глубиной 1. А выражение -no-parent означает, что ссылки к родительскому каталогу должны игнорироваться. Наконец, -A.pdf означает, что следует копировать только файлы типа PDF. Кстати, если написать -A"*.pdf" (с кавычками), то это тоже будет работать.

Предположим, Wget была прервана в середине процесса копирования группы файлов. Вы не желаете, чтобы имело место автоматическое расширения им©н файлов, которые успели скопироваться на ваш компьютер до прерывания Wget.
wget -nc -r http://www.gnu.ai.mit.edu/

Программа Wget распозна©т URL, указываюшие на личные данные конкретного пользователя, а не только anonymous. Общий формат проивед©н задесь

ftp://user:password@host/path
http://user:password@host/path

Если вы хотите скопировать файл из вашего собственного каталога, то
wget ftp://shevel:mypass@rec03.pnpi.spb.ru/lecture
Однако, если файл находится не в вашем каталоге, а, например, выше по каталожной иерархии, то следует использовать другую форму команды
SPMquotwget ftp://shevel:mypass@rec03.pnpi.spb.ru/../../data/lecture"
В показанном примере вы бер©те файл из каталога data, который находится на один уровень выше, чем основной каталог пользователя shevel и находится в соседней ветви дерева каталогов. В ряде случаев, URL полезно взять в кавычки:

wget "ftp://shevel:mypass@rec03.pnpi.spb.ru/../../data/lecture"

Если вы желаете сменить стиль визуализации процесса копирования, то можно, например, установить:
wget -dot-style=binary ftp://prep.ai.mit.edu/pub/gnu/README
Такой стиль часто оказывается удобнее (8K байтов на точку или 512K байтов на строку). Стиль, который вам оказался более по вкусу, можно поместить в ваш файл .wgetrc, сделав тем самым этот стиль стандартным умолчанием.

13.7.3 Нетривиальные примеры использования Wget

Примеры, привед©нные здесь, являются полезными способами применения Wget.


next up previous contents
Next: 13.8 Использование серверов прокси Up: 13. Программа Wget Previous: 13.6 Конфигурационный файл .wgetrc
Andrei Chevel
Andrei.Chevel@pnpi.spb.ru