Ответ 1
Для пути, подобного: ftp.site.com/a/b/c/d
-nH
будет загружать все файлы в каталог a/b/c/d
в текущем каталоге, а -nH --cut-dirs=3
будет загружать все файлы в каталог d
в текущем каталоге.
Я хочу зеркалировать папку через 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.
Для пути, подобного: ftp.site.com/a/b/c/d
-nH
будет загружать все файлы в каталог a/b/c/d
в текущем каталоге, а -nH --cut-dirs=3
будет загружать все файлы в каталог d
в текущем каталоге.
-np
(без родительского) варианта, вероятно, сделает то, что вы хотите, связанный с -L 1
(я думаю, у меня нет установки wget), что ограничивает рекурсию на один уровень.
ИЗМЕНИТЬ. ОК. gah... может быть, мне стоит подождать, пока у меня будет кофе. Существует --cut
или аналогичный вариант, который позволяет вам "вырезать" указанное количество каталогов из выходного пути, поэтому для /a/b/c/d
разрез 2 заставит wget создать c/d
на вашей локальной машине
Вместо использования:
-nH --cut-dirs=1
использование:
-nH --cut-dirs=100
Это приведет к сокращению количества каталогов, и никакие папки не будут созданы.
Примечание: 100 = количество папок, которые нужно пропустить. Вы можете изменить 100 на любое число.
У меня было похожее требование, и следующая комбинация кажется идеальным выбором:
В приведенном ниже примере все файлы в 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.