Подтвердить что ты не робот

Как зеркалировать каталог с wget без создания родительских каталогов?

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

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

Но я не хочу создавать такую ​​структуру каталогов:

ftp.site.com → folder → вложенная папка → evendeeper

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

evendeeper

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

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

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

4b9b3361

Ответ 1

Для пути, подобного: ftp.site.com/a/b/c/d

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

Ответ 2

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

ИЗМЕНИТЬ. ОК. gah... может быть, мне стоит подождать, пока у меня будет кофе. Существует --cut или аналогичный вариант, который позволяет вам "вырезать" указанное количество каталогов из выходного пути, поэтому для /a/b/c/d разрез 2 заставит wget создать c/d на вашей локальной машине

Ответ 3

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

-nH --cut-dirs=1

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

-nH --cut-dirs=100

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

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

Ответ 4

У меня было похожее требование, и следующая комбинация кажется идеальным выбором:

В приведенном ниже примере все файлы в http://url/dir1/dir2 (только) загружаются в локальный каталог /dest/dir

wget  -nd -np -P /dest/dir --recursive http://url/dir1/dir2

Спасибо @ffledgling за подсказку "-nd"

Для приведенного выше примера:

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

Фрагменты из руководства:

   -nd
   --no-directories
       Do not create a hierarchy of directories when retrieving recursively.  With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
       filenames will get extensions .n).


   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.  This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.