Как мне отразить каталог с помощью wget, не создавая родительские каталоги? - PullRequest
44 голосов
/ 18 февраля 2011

Я хочу отразить папку через FTP, например:

wget --mirror --user=x --password=x ftp://ftp.site.com/folder/subfolder/evendeeper

Но я не хочу создавать структуру каталогов, подобную этой:

ftp.site.com -> папка -> подпапка -> evendeeper

Я просто хочу:

evendeeper

И все, что ниже этого, будет результатомсостав.Также было бы приемлемо для содержимого evendeeper оказаться в текущем каталоге, если подкаталоги на сервере для подкаталогов evendeeper созданы.

Мне известна опция -npв соответствии с документацией, которая просто не позволяет переходить по ссылкам на родительские страницы (это не проблема для двоичных файлов, которые я копирую по FTP).Мне также известна опция -nd, но это вообще не позволяет создавать какую-либо структуру каталогов, даже для подкаталогов evendeeper.

Я бы рассмотрел альтернативы, если они основаны на командной строке,легко доступны в виде пакетов Ubuntu и легко автоматизируются, как wget.

Ответы [ 3 ]

60 голосов
/ 18 февраля 2011

Для пути типа: ftp.site.com/a/b/c/d

-nH будет загружать все файлы в каталог a/b/c/d в текущем каталоге, а -nH --cut-dirs=3 будет загружать все файлы в каталог d втекущий каталог.

8 голосов
/ 20 апреля 2014

Вместо использования:

-nH --cut-dirs=1

использование:

-nH --cut-dirs=100

Это сократит больше каталогов, и папки не будут созданы.

Примечание: 100 = количество папок, которые нужно пропустить. Вы можете изменить 100 на любое число.

8 голосов
/ 18 февраля 2011
Параметр

-np (без родителя), вероятно, будет делать то, что вы хотите, связанный с -L 1 (я думаю, у меня нет wget, установленного до меня), что ограничивает рекурсию одним уровнем.

EDIT.Хорошо.Гах ... может быть, мне следует подождать, пока я выпью кофе ... Существует опция --cut или аналогичная, которая позволяет вам "вырезать" указанное количество каталогов из пути вывода, поэтому для /a/b/c/dсокращение 2 заставит wget создать c/d на вашей локальной машине

...