|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Ramazan Ja-Far 2:5020/400 12 Oct 2002 23:45:21 To : Victor Wagner Subject : Re: teleport -------------------------------------------------------------------------------- Hi! On Sat, 12 Oct 2002 15:23:28 +0000 (UTC), Victor Wagner wrote: RJF>> Сначала я перечислю недостатки wget: RJF>> * не умеет passive FTP (я использую ncftpget как замену), VW>Ы??? VW>vitus@wagner$ wget --version VW>GNU Wget 1.8.1 VW>vitus@wagner$ wget --help |grep passive VW> --passive-ftp использовать "пассивный" режим передачи. Sorry, давным-давно я делал /passive в man wget и там ничего не нашлось на эту тему (для версии GNU Wget 1.6). С тех пор я пользуюсь ncftpget для FTP URLs. VW>234 строки мануала на разделы Recursive Retrieval Options и Recursive VW>Accept/Reject Objects это мало? :-) Это измеряется не количеством строк в manpages, а удобством/возможностью использования. Допустим, есть domain accept/reject и extension accept/reject, когда проще и эффективнее было-бы использовать URL regex. В том же Offline Explorer можно ограничить выкачку только определённых поддиректорий с сервера. Это удобно, если нужно выкачать многостраничную статью, которая пестрит ссылками на другие статьи и тематические разделы на сервере (вверх/вбок). RJF>> * не умеет останавливать процесс рекурсивной закачки и RJF>> запоминать состояние на винте (с тем, чтобы впоследствии RJF>> восстановить), VW>Опция -c позволяет продолжить процесс с того места, где было закончено VW>скачивание без дополнительного запоминания состояния. Ибо сравнение VW>результатов предыдущей закачки с состоянием удаленного сервера VW>однозначно определяет оное состояние. Hет. Hе определяет, к сожалению. VW>А лучше -m. Во-первых, многие сервера не высылают Last-Modified, в особенности для html страниц. Можно, конечно, смотреть на Content-Length. Есть ещё ETag. Однако файл на диске ничего не говорит о том, с каким ETag он был получен при предыдущей закачке. Скажем, wget качал файл и я его прервал (по Ctrl-C). Как потом wget определит, что файл недокачан - прочитает логи? Если для определения этого ему нужно соединиться с сервером и сравнить Content-Length, то представь ситуацию, когда выкачана сотня файлов и нужно сверить длины их всех с сервером! Это довольно дорогое удовольствие :-/. Если ты считаешь, что отдельный файл состояния "сессии" не нужен, то можно использовать такую схему: пока файл закачивается, он имеет локальное имя типа www.srv.dom/directory/.wgettmp.file.html Тогда можно очень просто определить, закачан ли полностью http://www.srv.dom/directory/file.html: ищем www.srv.dom/directory/file.html или, если такого нет, www.srv.dom/directory/.wgettmp.file.html И так для всех 100 файлов :-). Это побыстрее будет, чем консультироваться с сервером и удобнее, чем пользоваться -nc, сливая руками недокачанные файлы (вероятно, определяя их через лог). RJF>> * не понимает JavaScript в страницах (хотя если кто RJF>> понимает, тольку всё рано немного), VW>Вот то-то и оно, что немного. Зато понимает cookie-файл от Мозиллы. VW>Так что если надо выкачать что-то, требующее авторизации со скриптами и VW>куками, нужно сначала пойти Мозиллой, добраться до того места, где дадут VW>качать, и уже туда натравливать wget. Это интересно :-). P.S. насчёт URL regex хотелось бы иметь не просто accept/reject list, а нечто вроде "^www\.server1\.com" content "text/html" refresh_old "^www\.server1\.com" content "image/jpeg" no_refresh "^www\.server1\.com/.*\.gif$" refresh_old_and_missized "^www\.server2\.com" content "text/html" refresh_missized Всё что не указано в списке, reject. Или вариации. Формат такой: <pattern1> [content <pattern2>] [options] * no_refresh - не обновлять полностью закачанные файлы * refresh_missized - обновлять файлы с не совпадающим размером остальные опции очевидны И, естественно, нужен способ проверки валидности частично закачанных файлов. Т.е. нужно где-то запоминать характеризующую ресурс информацию из заголовков HTTP "Content-Type", "Content-Length", "Last-Modified", "ETag". Скажем, создавать по два файла: www.srv.dom/directory/.wgetD.file.html - data www.srv.dom/directory/.wgetH.file.html - headers во время закачки http://www.srv.dom/directory/file.html И по окончании закачки: 1) переименовывать www.srv.dom/directory/.wgetD.file.html в www.srv.dom/directory/file.html 2) timestamp the www.srv.dom/directory/file.html 3) удалять www.srv.dom/directory/.wgetH.file.html Тогда после прибивания wget или сбоя AC power получаем ситуацию, в которой разобраться значительно легче (и быстрее). -- Bye! Ramazan --- ifmail v.2.15dev5 * Origin: Svit Online (post does not reflect views of Golden Tele (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/34843b8c7efad.html, оценка из 5, голосов 10
|