Подписаться  на наше издание быстро и дешевле чем где-либо Вы можете прямо сейчас! Подписаться!

 


Есть утилиты, которыми нормальный сисадмин просто обязан уметь пользоваться. Одна из них — wget — пожалуй, наиболее надежный менеджер загрузок.


Чем больше работаешь с компьютером, тем меньше тебе это нравится. "Это" подразумевает всякие красоты вроде скинов, визуальных схем (удачных и неудачных), различных полупрозрачных окон… Хочется, чтобы программа делала, что ей положено,— и желательно без моего участия.


Задачка, в общем, типичная: я сижу дома, у меня оплата интернета по трафику или времени — и мне надо закачать что-то мегасов на пятьдесят-сто. А в это время на работе сколько угодно быстрого трафика, да только с работы я уже вышел или, наоборот, еще не пришел (или выходные за окном, или вообще неохота туда ехать). Также предполагается, что я занимаю честную позицию, всячески борюсь с пиратством, а поэтому поставил себе на работе Linux. Может, и не факт, что и у вас рабочая станция под Linux, но, по крайней мере, будем предполагать, что есть хоть какой-то шелл. Конечно, и под MS Windows можно что-то подходящее найти или придумать (да хоть тот же Perl поставить_ — но многим уже просто надоели начальники, которые буквально заставляют пользоваться пиратским ПО. На человеческий язык это переводится как "Ты укради, а я сэкономлю денег…". Кроме того, под Linux не нужно ничего особо придумывать, там уже и так есть всё необходимое (кроме Warhammer DOW Winter Assault).


Итак, задачка в три действия: запустить закачку, закачать, придти и забрать файлы (например, на флешке).


Запустить закачку можно сто и одним способом: через специальное почтовое сообщение, через аську, через удаленный шелл, через регулярное чтение какого-то файла заданий на ftp-ресурсе, через SMS-шлюз и т.д., и т.п.


Закачать тоже можно разными способами — вплоть до написания собственного мини-скрипта, читающего "голые" сокеты, на чем угодно. Но такая идея должна придти вам в голову в последнюю очередь: в мире Unix, построенном на идеях Дзен, бездействие всегда ценится больше, чем действие. В идеале вы должны говорить: "Я достиг всего, что хотел, ничего для этого не делая". Поэтому мы, ничего не изобретая, тут же находим искомое, а именно: неинтерактивный менеджер закачек wget.


Возможности


"Неинтерактивный" подразумевает тот факт, что вы не должны участвовать в процессе передачи и можете даже не быть залогоненым к терминалу в процессе закачки. В процессе работы программа не обязательно требует консоли для ввода или вывода, все сообщения могут записываться в файл журнала. Хотя, если wget работает в терминальном режиме, то его вывод весьма обширен. В частности, отображаются "градусники" каждой загрузки. Помимо изложенного, у wget еще немало полезных свойств. Естественно, поддерживается докачка после обрыва соединения (тайм-аута), поддержка прокси и, например, адресации IPv6.


Но что сделано в wget совершенно "без башни", так это массовые закачки. Возможно, вы помните такую утилитку, как Teleport Pro, закачивавшую сайты вместе со всем их содержимым. Так вот — wget делает то же самое. При этом существует система правил, каким линкам и на какую глубину нужно следовать. После получения реконструируется схема каталогов сайта — и линки заменяются таким образом, чтобы можно было просматривать весь сайт в офлайне. Не бог весть какое чудо, но безусловно cool.


Помимо закачки файлов, wget поддерживает еще и cookies, чтобы удаленный сервер не мог отличить вашу закачку от работы настоящего браузера. Вы можете даже задать строку "Referer" в поле запроса, как бы "переходя" на данный сайт с определенного URL, сохранять полный HTTP-протокол, а не только данные, а также отдельно сохранять cookies для дальнейшего разбора и использования. Аналогично хорошо поддерживается HTTPS/SSL — можно указать ключи, сертификаты и все такое.


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


Настройки и параметры


Настройка wget производится персонально, для каждого пользователя отдельно, через файл $HOME/.wgetrc. Настройки, общие для всех пользователей, находятся в /usr/local/etc/wgetrc. На самом деле этих файлов может и не быть — всё то же самое делается из командной строки. Параметров много, но они просты и мнемоничны.
Единственный обязательный параметр — это URL закачиваемого ресурса. На самом деле wget значительно умнее, чем можно предположить: он может начать с имени сайта и, пользуясь serverside forwarding, получить соответствующий стартовый ресурс, например index.php. Вы не должны заботиться о таких вещах, как поиск конкретных точек входа.


Два первых и главных вопроса: куда производится загрузка и как организовать эту самую рекурсию. Загрузка производится "куда попало" — wget совершенно этим не заморачивается, загружая файлы в текущий каталог. Не в ваш домашний и не в каталог, откуда программа запущена,— а именно в текущий. Как следствие вы должны создать каталог и, прежде чем начать закачку, сделать cd по месту назначения. Следите за тем, чтобы тот каталог, куда вы начинаете закачку, принадлежал вам (или, по крайней мере, чтобы у вас были там права на создание файлов: право на запись +w на сам каталог). Пару раз я случайно пытался сохранить файлы в "не общем" каталоге — и некоторое время удивлялся их отсутствию.


Второй вопрос. "Как же организовать рекурсию". Собственно, сделать это очень просто — куда сложнее ее остановить. Для грубой закачки сайта или каталога "отсюда и до забора" есть ключ "-m", что значит "– –mirror". Это заставляет выкачивать все файлы в пределах данного домена на неопределенную глубину. Иногда таким образом удается выкачать такое, чего и не ожидали. В общем, если нет нужды так уж глубоко "копать", можно воспользоваться одним из двух ключей:

  • "– r" или "– –recursive" задает сам режим рекурсии;
  • "-l" или "– – level=N" определяет, на какое количество уровней от корневого документа следует "внедряться".

По умолчанию FTP-ссылки на веб-страницах не считаются поводом для закачки. В противном случае следует указать специальный ключ "– – follow-ftp". Вообще, с помощью списков follow-tags и ignore-tags можно настроить путешествие по любым желаемым тэгам.


Еще раз обращаю ваше внимание, что рекурсия происходит в рамках одного домена, так что, например, задав "wget -m
www.comizdat.com", вы не выйдете за рамки домена и не закачаете, к примеру, www.comizdat.com, на который есть ссылка. Если вы хотите задать другую линию поведения и переходить между сайтами в процессе закачки, укажите ключ "-H" или "– –span-hosts". А чтобы таким образом не "замиррорить" весь интернет (и, в частности, чтоб не выкачивать различные баннерные сети), лучше попутно указать ключ "-D=" ака "– –domains" (список доменов, для задания только определенных "направлений"). Антонимом является ключ "– –exclude-domains", который обозначает "туда не ходи". Существуют аналогичные параметры и для отдельных каталогов, а также фильтры для типов файлов.


Не буду особо "утюжить" все параметры wget, скажу только, что не для всех POSIX- (длинных, начинающихся с двух минусов) параметров есть однобуквенные ANSI-эквиваленты. Так что иногда ваша команда будет выглядеть слегка "хвостатой", и лучше формировать ее как-то автоматически, например с помощью скрипта командного процессора. Что касается употребления параметров, то тут верно все, что верно для библиотеки getopt: однобуквенные можно группировать, параметры можно писать через пробел или без оного, работает префикс "– – no" и т.д.

 

 

Данная утилита не только стала достоянием Unix-систем, но и проникла в мир Windows.
Где ей сразу же приделали графический интерфейс


Уходим в тень


Напоследок упомяну о том самом параметре, который и переводит закачку в не интерактивный режим. Для этого в командной строке следует указать "-b" ака "– –background". При этом wget "отбрасывает" консоль сразу после запуска, закрывая предопределенные дескрипторы, и полностью уходит в подполье. Это означает, что вы можете выходить из системы — вы и ваша консоль больше не нужны для завершения начатой операции. Чтобы все-таки иметь возможность почитать журнал закачки и отреагировать на возможные ошибки, задайте "-o" или "-a" (чтобы, соответственно, создать новый или добавить в существующий файл журнала). Если файл не указан, то журнал будет называться wget-log и располагаться в каталоге назначения.


Вот и все. Успешной закачки!


Нет ничего любезнее открытого кода. Фактически это означает, что хорошо написанная программа найдет свой дом и в других ОС. Так и случилось с wget, порт которой существует и для Windows. Взять его можно вот здесь:
www.cybershade.us/winwget/download.html.


Распакуйте wget туда, откуда можно запускать программы из командной строки (скорее всего, вам подойдет C:\WINDOWS). Кроме того, с этого же сайта нужно будет скачать SSL-библиотеку для wget и распаковать ее туда, откуда может быть загружена библиотека.


Теперь вы сможете и под "окнами" пользоваться ненавязчивым сервисом консольной загрузки. Но! Если вам больше нравится графический интерфейс — не беда, есть соответствующая оболочка под названием WinWget. Качать можно с уже указанного URL. При первом запуске утилиты следует с помощью специальной кнопки (вас это не пугает:) ) указать, где лежит wget. Вот и все, можно качать.

2006.06.23
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".