Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Konstantin Tokar                     2:5020/400     07 Jun 2005  13:12:37
 To : Sergey Terentiev
 Subject : Re: скрипт для wget
 -------------------------------------------------------------------------------- 
 
 Sergey Terentiev wrote:
 
 > *Привет* All.
 > 
 > Пытаюсь прикрутить wget для автономной скачки файлов с инета в заданное время.
 > Сейчас это сделано так:
 > 1. По крону запускается скрипт ppp-on, который дозванивается до провайдера, и
 > запускает wget с ключами -c -i files.url
 > 2. Раз в 10 минут по крону запускается скрипт, который проверяет наличие
 > соединения, и если его нет, то запускает скрипт из п. 1
 > 3. По крону запускается скрипт который в заданное время запускает ppp-down
 > и killall wget
 
 Я реализовал другой алгоритм, на перле. Список файлов лежит в текстовом 
 файле - очередь на закачку (планирую перенести на СУБД, но так легче 
 добавлять новые файлы). Читается строка, запускается wget. Дальше 
 парсится вывод wget'а, чтобы отловить ситуации завершения с ошибками и 
 завершения успешного. При необходимости wget убивается kill -9 PID. 
 Список закаченных успешно файлов сохраняется, и при просмотре очереди на 
 закачку учитывается. Плюс к этому, постоянно устраняются мелкие 
 неприятности. При убийстве wget'а файлы не портятся.
 
 Собственно, я не понимаю, зачем ты вообще глушишь wget - если соединения 
 нет, он будет долго-долго повторять попытки, но тебе-то от этого не 
 жарко, ни холодно.
 
 > 
 > Собственно проблемы:
 > 1. Hесмотря на наличие ключа -c часто большие файлы получаются битыми. Когда
 > образ тянется неделю, а потом оказывается битым, довольно обидно.
 
 Странно это.
 
 > 2. Hеобходимость контролировать: докачались ли все файлы? Hе пора ли убирать
 > из крона запуск всей этой лабуды? Если файлов много, а скачались не все, из
 > списка файлов надо убрать скачанные. Короче лишние действия руками.
 
 Парси вывод wget. Он всё необходимое сообщает.
 my $pid = open3( \*WTRFH, \*RDRFH, \*ERRFH, "wget -c -m -l 1 -t 0 -T 120 
 -np $url_wget" )|| die($!);
 while (<ERRFH>) {
 ...
 }
 
 ...
 
 > 
 > И вообще, мое решение начинает казаться кривоватым. Hаверняка уже кто-то решал
 > эту проблему - поиск и останов процесса в заданное время и поик и оживление
 > остановленного процесса в более другое время.
 > Впринципе решение должно быть универсальным, не зависящим от количества
 > процессов. Сейчас у меня 1 wget, а потом может и 10 висеть.
 
 Морда к wget'у есть. Мне показалось проще сделать свою.
 
 > 
 > 
 > Проблему  2 пока только обдумываю. Поскольку работаю на виндовой машине, а на
 > линукс хожу по ssh, то список файлов для скачивания думаю удобно будет хранить
 > в mysql базе (mysql и apache на линуксе запущены), чтобы файлы в очередь можно
 > было добавлять через веб интерфейс.
 
 Можно через web и без СУБД. Без СУБД хорошо тем, что система получается 
 более мобильной.
 
 > Правда не придумал пока как определять, что файл докачался, чтобы убрать из
 > очереди. Если подскажете хорошее решение буду благодарен =)
 
 wget выдаёт кучу сообщений, например
 
 /Refusing to truncate existing file \`(.*index\.html)\'\./
 
 / \s+ saved \s+ \[(\d+)\]$/xo || / \s+ saved \s+ \[(\d+)\/(\d+)\]$/xo
 
 /^Continued download failed on this file, which conflicts with \`\-c\'\.$/io
 
 Такие сообщения надо ловить и анализировать. Hапример, второе - 
 свидетельство успешной закачки.
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 скрипт для wget   Sergey Terentiev   04 Jun 2005 00:18:09 
 Re: скрипт для wget   Konstantin Tokar   07 Jun 2005 13:12:37 
 скрипт для wget   Andrew Vetlugin   07 Jun 2005 20:45:02 
Архивное /ru.linux/65775a526ef2.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional