Как заставить wget загружать рекурсивное объединение –прихват с –exclude-каталогами?

Я пытаюсь загрузить некоторые каталоги с сервера Apache, но мне нужно игнорировать некоторые каталоги с огромными файлами, которые мне не нужны

Структура сервера на сервере несколько напоминает это (упрощенное):

somedir/ ├── atxt.txt ├── big_file.pdf ├── image.jpg └── tmp └── tempfile.txt 

Итак, я хочу получить все файлы .txt и .jpg , но я НЕ хочу файлы .pdf или все, что находится в каталоге tmp .

Я попытался использовать --exclude-directories вместе с --accept а затем с --reject , но в обеих попытках он продолжает загружать tmp и его содержимое.

Это те команды, которые я пробовал:

 # with --reject wget -nH --cut-dirs=2 -r --reject=pdf --exclude-directories=tmp \ --no-parent http://<host>/pub/somedir/ # with --accept wget -nH --cut-dirs=2 -r --accept=txt,jpg --exclude-directories=tmp \ --no-parent http://<host>/pub/somedir/ 

Есть ли способ сделать это?

Как именно работают --exclude-directories ?

  • Как загрузить pdf-файлы, на которые ссылаются страницы одного или двух уровней внутри семени
  • wget загружает tar.gz файл как html?
  • Как отключить сжатие gzip с помощью wget?
  • Как wget Youtube ужасный URL
  • Почему параллель замедляется через некоторое время?
  • Инструменты для анализа автоматически генерируемых HTTP-индексов?
  • Как скопировать чужие папки с public.me.com с помощью wget-подобного инструмента?
  • Как загрузить пакет RPM и установить его в одной строке?
  • 3 Solutions collect form web for “Как заставить wget загружать рекурсивное объединение –прихват с –exclude-каталогами?”

    Вместо того, чтобы попробовать и сделать это с помощью wget я бы предложил использовать более подходящий инструмент для загрузки сложных «наборов» файлов или фильтров.

    Вы можете использовать httrack для загрузки всех каталогов файлов (в основном, зеркалирования всего с сайта), или вы можете указать httrack фильтр вместе с определенными расширениями файлов, такими как файлы только для загрузки .pdf .

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

    Вот несколько примеров возможностей подстановки:

    • *[file] или *[name] – любое имя файла или имя, например нет /,? а также ; персонажи
    • *[path] – любой путь (и имя файла), например, нет? а также ; персонажи
    • *[a,z,e,r,t,y] – любые буквы среди a, z, e, r, t, y
    • *[az] – любые буквы
    • *[0-9,a,z,e,r,t,y] – любые символы среди 0..9 и a, z, e, r, t, y

    пример

     $ httrack http://url.com/files/ -* +1_[az].doc -O /dir/to/output 

    Коммутаторы:

    • -* – удалить все из списка вещей, чтобы скачать
    • +1_[az].doc – загружать файлы с именем 1_a.doc, 1_b.doc и т. Д.
    • -O /dir/to/output – записывать результаты здесь

    У меня был аналогичный случай, когда я сделал эквивалент того, что будет для вас --exclude-directories '/tmp' и это сработало для меня.

    См. Также https://serverfault.com/questions/156045/how-to-download-with-wget-without-following-links-with-parameters/156057#156057 для более мощных параметров в последних wget (регулярных выражениях).

    У многих, включая меня, возникли проблемы с определением того, как использовать -X, и нашел ответ, который трудно запомнить (между годами между использованием).

    Трудно запомнить трюк записать это 🙂

     $ wget -X fo*o ... # does not work for directories $ wget -X */fo*o,*/*/fo*o,*/*/*/fo*o ... # works for directories $ wget -X \*/fo\*o/,\*/\*/fo\*o/,\*/\*/\*/fo\*o/ ... 

    ОТВЕТ:

    site hack wget -? / src / utils.c, чтобы использовать basename вместо текущего пути, также в командной строке используйте шаблон имени файла (просто 'fo * o', ничего больше). и обратите внимание на параметр FNM_PATHNAME, установленный в 0 (в противном случае он требует «/» для завершения хвоста соответствия). следующий патч против wget-1.12 там мой более простой способ, определяя? FNM_FLAGS, но это работает «отлично».

     --- utils.c.old 2016-09-13 07:49:11.000000000 -0400 +++ utils.c 2016-09-13 09:32:58.000000000 -0400 @@ -907,6 +907,9 @@ return *d1 == '\0' && (*d2 == '\0' || *d2 == '/'); } +/* for basename */ +#include <libgen.h> + /* Iterate through DIRLIST (which must be NULL-terminated), and return the first element that matches DIR, through wildcards or front comparison (as appropriate). */ @@ -921,18 +924,24 @@ { /* Remove leading '/' */ char *p = *x + (**x == '/'); + /* SITE HACK - only if patterned ignore leading dirs cmp as file */ + char sh_str[1024*16], *pp; + strcpy(sh_str,basename(dir)); + pp=sh_str; +#if 0 + printf("? %s == %s ?\n",p,pp); +#endif if (has_wildcards_p (p)) { - if (matcher (p, dir, FNM_PATHNAME) == 0) + if (matcher (p, pp, 0) == 0) break; } else { - if (subdir_p (p, dir)) + if (subdir_p (p, pp)) break; } } - return *x ? true : false; } 
    Interesting Posts

    Как настроить невидимую работу cron?

    Как сбросить список используемых inodes файловой системы ext4 с помощью debugfs?

    Сервер Ubuntu 11.10: создание пользователя, домашний каталог, привилегии sudo: только командная строка

    ACL и простые старые разрешения

    локальный репозиторий yum с неработающим списком групп

    Открыть порт для передачи bittorrent

    Как установить инструменты программирования в корневой каталог, чтобы они могли использоваться пользователями, не являющимися администраторами?

    Символы кодируются дважды, когда я прошу SSH повторно подключить сеанс экрана на удаленном хосте

    Linux-дистрибутив со встроенным Xen?

    Использование Awk для поиска журнала Bro для IP-адресов / ключевых слов, найденных в текстовом файле в Интернете

    Не работает каталог rsync exclude

    Загружаются ли какие-либо файлы при завершении сеанса терминала?

    Изменить порядок запуска сервисов с помощью systemd

    Как найти папки, не содержащие недавно измененных файлов?

    Как я могу безопасно отправлять электронную почту через зашифрованное соединение из командной строки?

    Linux и Unix - лучшая ОС в мире.