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

Подраздел


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.

  • Если вы хотите иметь постоянно зеркальную копию удал©нной HTML страницы или каталога FTP, полезно использовать параметр -mirror или -m, который включает в себя -r -N. Вы можете поместить командную строку с вызовом программы Wget в crontab, определив, что она должна выполняться каждое воскресенье:

    crontab
    0 0 * * 0 wget -m ftp://ftp.xemacs.org/pub/xemacs/
    -o /home/shevel/weeklog

  • Если вы хотите сделать то же самое, но не желаете копировать всякие картинки, а только документы HTML, то можно поступить так
    wget -m -A.html http://www.w3.org/

  • Если вы хотели бы убрать все абсолютные линки, то можно сделать так:
    wget -k -r URL

  • Вы хотели бы выдать документ HTML на стандартный вывод: wget -O - http://www.fnal.gov
    При этом Wget автоматически предполагает молчаливое выполнение (-q).

  • Вы может также комбинировать различные возможности, чтобы найти нечто на удал©нных серверах:
    wget -O - http://www.fnal.gov | grep -i cern |
    wget -force-html -i -
    Здесь первый вызов Wget порождает вывод домашней страницы с сервера http://www.fnal.gov на стандартный вывод. Далее, команда grep отбирает те строки, которые содержат комбинацию cern. Далее, следующая команда Wget рассматривает ввод со стандартного ввода как список URL и производит копирование документов в соответствии со списком.


contents
Обновлено: 16.03.2015