Ru-Board.club
← Вернуться в раздел «Программы»

» Wget

Автор: b3nd3rster
Дата сообщения: 26.05.2007 07:36
Вот есть список ссылок (все точно ведут на файлы без скриптов каких либо и переадресаци), штук 150, и их надо проверить на наличие ошибки 404, а затем неработающие записать в отдельный файл. Возможно ли такое реализовать? Если нет, как по проще моего вариана сделать, возможно ли такое? Читал в справке, что wget может быть сетевым пауком, но оно ли это?
Автор: Aushkin
Дата сообщения: 31.05.2007 11:49
Нужна помощь. Задача такая. Нужно, что бы wget проверял указанный ftp и загружал его содержимое в указанную папку. Нужно так же, что бы при проверке, он смотрел, не менялись ли файлы и если они менялись, то загружал бы новые, заменяя локальную копию. Есть ещё одно "НО", локальные файлы могут меняться пользователем и оказаться по дате изменения новее тех, которые на ftp, но нужно, что бы локальные файлы были всегда только такими, какие на фтп, а не теми, которые накосячил пользователь.
Сделал так:
wget -c -r -np -nH -p ftp://мойфтп.ru -P "С:\Моя_папка"
Всё работает исправно, файлы сливаются, при изменении на серваке скачивается новая версия. Но вот проблема, если я локально вношу любое изменение в файл, то локально уже остается моя версия и версия этого же файла без изменений уже не берется с фтп.
Помогите разобраться, где ошибка. Заранее большое спасибо.
Автор: mithridat1
Дата сообщения: 31.05.2007 12:13
Aushkin
Для этого есть следующая опция

Цитата:
-N, --timestamping don't retrieve files if older than local.

Но если файлы локально были изменены пользователем то wget это никак не распознает
(Особенно если и размеры остались теми же)
Автор: Aushkin
Дата сообщения: 31.05.2007 12:29
-N никак не влияет на ситуацию. Если меняется файл на сервере, то загружается его обновленный вариант, но если меняется локальный файл, естетсвенно меняется и его timestamping и размер, то wget не трогает его и не заменяет его на оригинальный файл.
А нужно, что бы в локальной папке всегда была копия только удаленной директории и соответственно оригинальных файлов.
Да и кстати, "don't retrieve files if older than local." означает "не загружать файл, если он старее, чем локальный", а в моём случае нужно, что бы файлы загружались так или иначе, при условии, что локальная версия отличается от удаленной.
По сути, нужно что бы происходил мироринг, но только в одну сторону.
Автор: igor_andreev
Дата сообщения: 31.05.2007 12:59
Aushkin

Цитата:
нужно что бы происходил мироринг, но только в одну сторону.

Ну так а ключ --mirror для чего по твоему существует?
Автор: Aushkin
Дата сообщения: 31.05.2007 13:10
по моему --mirror существует для зеркалирования, но по моему зеркалирование оно понятие двустороннее, т.е. более новые файлы заменяют старые, как в одну, так и в другую стороны. Или я не прав?
что так:

wget -c -r -np -nH -p ftp://мойфтп.ru -P "С:\Моя_папка"


что так:

wget -c -r -np -nH -p --mirror ftp://мойфтп.ru -P "С:\Моя_папка"

результат эдентичен.

Стоит внести изменения в локальный файл, всё, он не будет перезаписан до тех пор, пока на сервере не появится версия старще локальной. А нужно, что бы в локальной директории всегда было только и строго то, что на фтп и никак иначе, без вариантов. Сколько бы юзер не ковырял файлы, нужно, что бы при очередной синхронизации, все его художества были безжалостно убиты и заменены чистой копией оригинальных файлов с сервера. Естественно, если что-то локально менялось, если нет, то загружаются только новые.
Автор: igor_andreev
Дата сообщения: 31.05.2007 14:11
Тест с маленьким txt-файлом 2 Кб


Код: wget http://www.nncron.ru/download/maillist_rules.txt
Автор: Aushkin
Дата сообщения: 31.05.2007 16:41
А как оно должно выглядеть с FTP и с таким учетом, что бы директория с названием FTP не создавалась, короче говоря, как в моём варианте, но с Вашим исправлением?

Вот я попробовал так:

wget -m -c -r -np -nH -p ftp://мойфтп.ru -P "С:\Моя_папка"

тоже получил после изменения файла т повторного запуска wget:


The sizes do not match (local 22) -- retrieving.

Но! В папке остался измененный мной файл! Я чего-то не верно делаю?
Автор: igor_andreev
Дата сообщения: 31.05.2007 18:16
Aushkin
А если без -c?
Автор: Aushkin
Дата сообщения: 31.05.2007 18:35
Можно, но "-с" это:
-c, --continue resume getting a partially-downloaded file.
эммм.... но работает. Спасибо большое!

В итоге получилась такая конструкция:

wget -m -r -np -nH -p -N ftp://мойфтп.ru -P "С:\Моя_папка"

но тогда вопрос, что будет с частично загруженным файлом, если во время загрузки связь разорвалась? -c и был добавлен, для того, что бы догружал.
Автор: b3nd3rster
Дата сообщения: 01.06.2007 01:20
А на мой вопрос никто не в состоянии ответить? =(


Цитата:
Вот есть список ссылок (все точно ведут на файлы без скриптов каких либо и переадресаци), штук 150, и их надо проверить на наличие ошибки 404, а затем неработающие записать в отдельный файл. Возможно ли такое реализовать? Если нет, как по проще моего вариана сделать, возможно ли такое? Читал в справке, что wget может быть сетевым пауком, но оно ли это?


Уже где только не спрашивал, все молчат. Может я вопрос не так задал, хотя что тут не понятного? Проверить ссылки на работоспобность
Автор: popkov
Дата сообщения: 01.06.2007 01:32
b3nd3rster
А wget в случае ошибки 404 выдаёт цифру 404 или известную надпись, которую можно было бы отловить командой find? Если да, то проблема, в общем-то разрешима, хотя относится уже к программированию на BAT-файлах или (если разбираешься) ещё круче можно сделать на WSH.
Только не спеши задавать вопросы в лоб - почитай тему. По сути, там уже есть все фрагменты кода, какие тебе нужны.
Автор: igor_andreev
Дата сообщения: 03.06.2007 10:54

Цитата:
Уже где только не спрашивал, все молчат.

А тут говорить то и не о чем. Wget у тебя под рукой, список тоже, хэлп у wget встроен...
Берешь свой список, files.txt например:

Цитата:

http://nncron.ru/download/nncron191.exe
http://nncron.ru/download/nncron190.exe
http://nncron.ru/download/nncron189.exe
http://nncron.ru/download/nncron188.exe
http://nncron.ru/download/nncron187.exe
http://nncron.ru/download/nncron186.exe

Вырубаешь все параметра в .wgetrc, относящиеся к ведению лога.

Код:
debug=off
verbose=off
quiet=off
server_response=off
Автор: evgenych
Дата сообщения: 27.06.2007 02:04
Че то я не пойму.
через браузер открывается
www.faqs.org/rfcs/rfc1.html

пишу
wget www.faqs.org/rfcs/rfc1.html

---> Resolving www.faqs.org... failed: Host not found

ping www.faqs.org

Обмен пакетами с www.faqs.org [207.44.235.116] по 32 байт:

Ответ от 207.44.235.116: число байт=32 время=298мс TTL=48
Ответ от 207.44.235.116: число байт=32 время=275мс TTL=48

GNU Wget 1.9.1
Автор: 8AleX8
Дата сообщения: 27.06.2007 09:00
evgenych

Цитата:
пишу
wget www.faqs.org/rfcs/rfc1.html

А как насчет http://?
Автор: evgenych
Дата сообщения: 27.06.2007 20:30
Вот еще пример:

Код:
wget http://rarlab.com/rar/wrar370ru.exe
--21:23:14-- http://rarlab.com/rar/wrar370ru.exe
=> `wrar370ru.exe'
Resolving rarlab.com... failed: Host not found.
Автор: dosya
Дата сообщения: 01.07.2007 15:54
не прикручивается сабж к мозиле.
делаю как написано, урл не находится.

и еще, мне надо для премиума рапидшары, чтобы автоматически подставлялось имя юзера и пароль. подскажите плиз как это сделать?
Автор: Aeismann
Дата сообщения: 15.10.2007 14:25
Товарищи, кто знает, как собрать сабж с поддержкой соксов? Рылся в нете, но там везде говорят, что нужна либа, и отправляют на сайт, который в дауне. Так-то я прогу скомпилял, но вот с соксами никак не выходит...
Автор: mithridat1
Дата сообщения: 15.10.2007 16:02
Aeismann
Я тоже давно ищу такую сборку,но никто не отзывается
Автор: Aeismann
Дата сообщения: 16.10.2007 09:59
mithridat1, вот-вот... я писал в саппорт, но их мыло недоступно, писал Кристоферу, но он не ответил... может, на никсовых форумах спросить? Но я не знаю, где именно...
Автор: mithridat1
Дата сообщения: 16.10.2007 10:07
Aeismann

Цитата:
отправляют на сайт, который в дауне

Сайт этот я так понимаю socks.nec.com.В принципе библиотеки socks5 которые там лежали сейчас можно и фтп-поиском найти... Сейчас попробую.

Добавлено:
Aeismann
ftp://ftp.kstu-kai.ru/os/unix/socks/v1.0r11/socks5-v1.0r11.tar.gz
ftp://ftp.kuban.ru/.1/Linux.1/Software1/socks5-v1.0r11.tar.gz
ftp://admin.tomsk.ru/pub/FreeBSD/distfiles/socks5-v1.0r11.tar.gz
http://freeware.sgi.com/source/socks5/socks5-v1.0r11.tar.gz
Вот по моему те библиотеки,что на socks.nec.com лежали
Автор: Aeismann
Дата сообщения: 16.10.2007 13:00
mithridat1, во, круто. Теперь бы еще заточить это под Вынь...
Автор: mithridat1
Дата сообщения: 16.10.2007 16:01
Aeismann
К сожалению,помочь в сборке с соксами не смогу,но если у вас все же получится просьба сообщить в теме.
Автор: Aeismann
Дата сообщения: 22.10.2007 12:29
Мда, похоже, нереально. Покопался я в сорсах, но директива использования либы фактически нигде не используется, т.е. настройка происходит где-то в глубинах скрипта configure. А поскольку выполняется он только под никсами, то вывод неутешителен... В никсах я нуб, поэтому вряд ли сумею разобраться. Пробовал собирать вгет под Cygwin, но после кучи непонятных ошибок от линкера едва не возненавидел все никсы и Си скопом). Так что придётся юзать проги типа FreeCap - пускай и не очень красивое решение, но хотя бы рабочее.
В заключение выкладываю хоть какой-то результат - вгет без вшитых SSL, что отменяет необходимость тащить с ним две либы.
http://ifolder.ru/3830776
Автор: MaxPolulyakh
Дата сообщения: 28.10.2007 20:08
Прошу помощи у специалистов по WGet-у.

Пытаюсь закачивать wget-ом апдейты к DrWeb.

Делаю это путём закачивания всех zip-файлов из заданной папки, ftp://ftp.drweb.com/pub/drweb/bases/. Однако в этой папке есть также пара файлов, которые не являются апдейтами баз, а именно vrcpp.zip и drweb32.zip. Однако они также регулярно обновляются и wget их также скачивает. Я не смог разобраться, как мне сделать так, чтобы программа их игнорировала.

Второй вопрос - можно ли как-то указать wget-у, чтобы скачанные файлы он складывал в определённую подпапку?

Вообще, в более широком смысле я бы хотел создать задание, которое бы позволяло просматривать папку на ftp, находить файлы, которые изменились со времени последней операции и скачивать только их, при этом не храня те, что были уже скачаны в прошлый раз.

Сможет ли кто-то мне помочь?

Заранее спасибо всем, кто сможет уделить этому время.
Автор: Aeismann
Дата сообщения: 29.10.2007 14:22

Цитата:
Я не смог разобраться, как мне сделать так, чтобы программа их игнорировала

-R, --reject=LIST comma-separated list of rejected extensions.


Цитата:
можно ли как-то указать wget-у, чтобы скачанные файлы он складывал в определённую подпапку?

-P, --directory-prefix=PREFIX save files to PREFIX/...


Цитата:
Вообще, в более широком смысле я бы хотел создать задание, которое бы позволяло просматривать папку на ftp, находить файлы, которые изменились со времени последней операции и скачивать только их, при этом не храня те, что были уже скачаны в прошлый раз

А как, по-твоему, вгет сможет определить, что файл изменился, если он удалён?
Автор: MaxPolulyakh
Дата сообщения: 29.10.2007 16:16

Цитата:
list of rejected extensions

extensions - это расширения, типы файлов, я так понимаю? А если все файлы одного типа, zip?


Цитата:
-P, --directory-prefix=PREFIX

Спасибо, сейчас проверю!

Проверил.
Переместил все zip-файлы в папку Bases. Создал Reject.txt с содержанием "vrcpp.zip, drweb32.zip", в командной строке добавил --reject=Reject.txt. Удалил эти два файла.

Командная строка: wget.exe -b -N -owget.log -t3 -nH --directory-prefix=Bases --reject=Reject.txt ftp://ftp.drweb.com/pub/drweb/bases/*.zip

Два удалённых файла скачались.

Что я сделал не так?


Цитата:
А как, по-твоему, вгет сможет определить, что файл изменился, если он удалён?

Я не знаю, потому и спрашиваю. Я привык думать, что иксовые утилиты через командную строку разве что кофе не варят. Может, он умеет с txt-файлами работать, читать из них ссылки с параметрами в виде даты, скажем, и времени создания, и при полном совпадении этих параметров с такими у файлов на ftp не качать их.

Не умеет? Ну, жаль, но не особенно. И так, в общем-то, работает, но хотелось бы совсем красиво и аккуратно сделать
Автор: Aeismann
Дата сообщения: 29.10.2007 17:28

Цитата:
extensions - это расширения, типы файлов, я так понимаю? А если все файлы одного типа, zip?

Не знаю, почему они написали про расширения, но у меня работает как обычная маска, например, параметр
"-A*o*.*"
закачивает только файлы с буквой "о" в имени.


Цитата:
Создал Reject.txt с содержанием "vrcpp.zip, drweb32.zip", в командной строке добавил --reject=Reject.txt

Насколько я понимаю, такая фишка не проканает, только "comma-separated list". А такой командой ты запретил скачивать файл "Reject.txt" =)))


Цитата:
Я привык думать, что иксовые утилиты через командную строку разве что кофе не варят. Может, он умеет с txt-файлами работать, читать из них ссылки с параметрами в виде даты, скажем, и времени создания, и при полном совпадении этих параметров с такими у файлов на ftp не качать их.

Ну, может, какая-то другая утила и умеет, но вгет нет...
Автор: MaxPolulyakh
Дата сообщения: 31.10.2007 00:40

Цитата:
Насколько я понимаю, такая фишка не проканает, только "comma-separated list". А такой командой ты запретил скачивать файл "Reject.txt" =)))

Да, это я протупил Исправил на --reject=drweb32.zip,vrcpp.zip - теперь работает

Спасибо!

Автор: popkov
Дата сообщения: 02.11.2007 11:30
Объясните, а что это за
Цитата:
trunk Binary Build
? На запрос wget --version
выдаёт
Цитата:
GNU Wget 1.10+devel
.

Собственно, решил скачать обновление потому, что у меня последняя версия почему-то размер загруженной части файла пишет, используя вместо точки букву "a"... Старые версии тек себя не вели. Неприятная особенность выделена:
Цитата:
D:\DESKTOP\wget-1.10.2b>wget http://www.ias.ac.in/jarch/proca/4/00000139.pdf
--11:27:57-- http://www.ias.ac.in/jarch/proca/4/00000139.pdf
=> `00000139.pdf'
Resolving www.ias.ac.in... 203.197.183.66
Connecting to www.ias.ac.in|203.197.183.66|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 168а580 (165K) [application/pdf]

25% [========> ] 42а288 2.34K/s ETA 00:53

Можно это как-то исправить?

Страницы: 12345678910111213141516

Предыдущая тема: Windows XP FAQ = обновлен 19 мая =


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.