LINUX.ORG.RU

wget - скачать каталог или его содержимое только из него с сервера

 , ,


0

3

Подскажите, пожалуйста, по ключам wget, как скачать только каталог или его содержимое не поднимаясь выше (../) и не повторяя остальную структуру хранилища?
Ну вот допустим, вот этот каталог https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/

У меня максимально вот что получалось:

$ wget -c -r -k -p -E -nc https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/
и к сожалению структура (или дерево) выкачивается с различными html-файлами и как-то пока это закачается, как-то уж долго прям(

★★★★★

Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от anonymous

-I /slackbuilds/14.1/desktop/openbox/ -l 1

Это ограничение во все стороны, а товарищ спрашивает, как не ходить вверх по дереву.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

да, это то же пробовал, но вот что получаю:

$ wget -c -r -k -p -E -nc --no-parent https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/
...
$ tree slackbuilds.org/
slackbuilds.org/
├── icons
│   ├── back.gif
│   ├── blank.gif
│   ├── text.gif
│   └── unknown.gif
├── robots.txt
└── slackbuilds
    └── 14.1
        └── desktop
            └── openbox
                └── index.html

5 directories, 6 files

т.е. нужные файлы и не скачал

NK ★★★★★
() автор топика
Ответ на: комментарий от Zmicier

-I /slackbuilds/14.1/desktop/openbox/ -l 1

а как полностью выглядеть будет?

┌─[ /tmp ]
└─$ wget -c -I https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/ -l 1
wget: отсутствует URL
Использование: wget [ПАРАМЕТР]... [URL]...

Дополнительные параметры выводятся по команде «wget --help».
┌─[ /tmp ]
└─$ wget -c https://slackbuilds.org/ -I /slackbuilds/14.1/desktop/openbox/ -l 1
...
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: нет данных [text/html]
Сохранение в: «index.html»

    [ <=>                                                            ] 0           --.-K/s   за 0s      


Невозможно записать в «index.html» (Победа).

мне надо что бы в текущем каталоге просто появился каталог ./openbox с содержимым https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от NK

да, это то же пробовал, но вот что получаю:

То есть у вас В-гет и так выше по дереву не ходит, но вы все-таки задали вопрос «как скачать только каталог или его содержимое не поднимаясь выше (../) и не повторяя остальную структуру хранилища?», вместо того, чтоб спросить «почему не качаются нужные файлы». Поразительная логика.

т. е. нужные файлы и не скачал

Посмотрев в --debug, легко увидеть, что дело все в том, что этот ваш «Слакбилдс» запрещает роботам у него скачивать файлы, а ГНУ В-гет, будучи порядочным роботом, подчиняется правилам.

Прикажите ему не подчиняться:

$ wget --execute 'robots=off' --mirror --no-parent \
https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Прикажите ему не подчиняться

ну все равно дерево выкачивается(

└─$ wget --execute 'robots=off' --mirror --no-parent https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/
...

└─$ ls
slackbuilds.org/

└─$ tree slackbuilds.org/
slackbuilds.org/
└── slackbuilds
    └── 14.1
        └── desktop
            └── openbox
                ├── README
                ├── doinst.sh
                ├── index.html
                ├── index.html?C=D;O=A
                ├── index.html?C=D;O=D
                ├── index.html?C=M;O=A
                ├── index.html?C=M;O=D
                ├── index.html?C=N;O=A
                ├── index.html?C=N;O=D
                ├── index.html?C=S;O=A
                ├── index.html?C=S;O=D
                ├── openbox.SlackBuild
                ├── openbox.info
                ├── slack-desc
                ├── xinitrc.gnome-openbox
                ├── xinitrc.kde-openbox
                ├── xinitrc.openbox
                └── xinitrc.openbox-session

4 directories, 18 files
NK ★★★★★
() автор топика
Ответ на: комментарий от NK

Невозможно записать в «index.html» (Победа).
(Победа)

Надо бы расстрелять переводчиков wget

whoami
()

Если речь про SlackBuilds.org, то есть смысл слезть с гамака и снять лыжи:

$ wget http://slackbuilds.org/slackbuilds/14.1/desktop/openbox.tar.gz
$ tar xf openbox.tar.gz
$ cd openbox

Если хочется забирать именно из дерева, лучше делать это по ftp или rsync:
$ wget -nH --cut-dirs=2 -r ftp://slackbuilds.org/14.1/desktop/openbox
или
$ lftp -c "open ftp://slackbuilds.org; mirror /14.1/desktop/openbox; bye"
или
$ rsync -av slackbuilds.org::/slackbuilds/14.1/desktop/openbox .

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 2)

Из параметров wget:
-nH отменит создание каталога по имени хоста (slackbuilds.org/);
--cut-dirs=2 отменит создание 2 каталогов от корня (14.1/desktop/), останется только openbox.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 2)
Ответ на: комментарий от NK

ну все равно дерево выкачивается

Я вас не понимаю. Раньше у вас ничего не загружалось, теперь загружается — вы заявляете «все равно дерево». Сформулируйте уже, что́ вам надо.

Zmicier ★★★★★
()
Ответ на: комментарий от bormant

tar xf openbox.tar.gz

про это знаю, просто на примере SBo хотел получить команду

ftp или rsync

за rsync спасибо, что-то и не подумал, действительно можно, но опять таки это для SBo, а если реп в котором нет рсинка

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Сформулируйте

Давайте попробуем. Итак, имеем https://slackbuilds.org/slackbuilds/14.1/desktop/
и в нем ./openbox https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/

и я хотел находясь в /tmp при помощи wget скачать только каталог openbox, что бы получился /tmp/openbox и в нем файлы, как и в
https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/ , как если бы я сделал:

┌─[ /tmp ]
└─$ rsync -av rsync://slackbuilds.org/slackbuilds/14.1/desktop/openbox .
receiving incremental file list
openbox/
openbox/README
openbox/doinst.sh
openbox/openbox.SlackBuild
openbox/openbox.info
openbox/slack-desc
openbox/xinitrc.gnome-openbox
openbox/xinitrc.kde-openbox
openbox/xinitrc.openbox
openbox/xinitrc.openbox-session

sent 208 bytes  received 12,639 bytes  886.00 bytes/sec
total size is 11,970  speedup is 0.93
┌─[ /tmp ]
└─$ tree openbox/
openbox/
├── README
├── doinst.sh
├── openbox.SlackBuild
├── openbox.info
├── slack-desc
├── xinitrc.gnome-openbox
├── xinitrc.kde-openbox
├── xinitrc.openbox
└── xinitrc.openbox-session

0 directories, 9 files

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

Ну и? Вам же уже все написали? Осталось только совместить несколько ключей в одной строке:

$ wget --execute 'robots=off' --mirror --no-parent \
--no-host-directories --cut-dirs=3 \
'https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/'
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)
Ответ на: комментарий от bormant

Благодарю, работает

┌─[ /tmp ]
└─$ wget -nH --cut-dirs=2 -r ftp://slackbuilds.org/14.1/desktop/openbox
...

┌─[ /tmp ]
└─$ tree openbox/
openbox/
├── README
├── doinst.sh
├── openbox.SlackBuild
├── openbox.info
├── slack-desc
├── xinitrc.gnome-openbox
├── xinitrc.kde-openbox
├── xinitrc.openbox
└── xinitrc.openbox-session

0 directories, 9 files
NK ★★★★★
() автор топика
Ответ на: комментарий от Zmicier

а вот, все получилось, спасибо за помощь

┌─[ /tmp ]
└─$ wget --execute 'robots=off' --mirror --no-parent \
--no-host-directories --cut-dirs=3 \
'https://slackbuilds.org/slackbuilds/14.1/desktop/openbox/'

...

┌─[ /tmp ]
└─$ tree openbox/
openbox/
├── README
├── doinst.sh
├── index.html
├── index.html?C=D;O=A
├── index.html?C=D;O=D
├── index.html?C=M;O=A
├── index.html?C=M;O=D
├── index.html?C=N;O=A
├── index.html?C=N;O=D
├── index.html?C=S;O=A
├── index.html?C=S;O=D
├── openbox.SlackBuild
├── openbox.info
├── slack-desc
├── xinitrc.gnome-openbox
├── xinitrc.kde-openbox
├── xinitrc.openbox
└── xinitrc.openbox-session

0 directories, 18 files

NK ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.