Как рекурсивно скопировать/загрузить весь каталог webdav?

Как рекурсивно скопировать/загрузить весь каталог webdav?

Когда я пытаюсь скопировать папку с сервера webdav на локальный диск с помощью Nautilus, он копирует то, что выглядит как файл манифеста (xml со списком каталогов и т. д.). С помощью cadaver я получаю пустой файл.

Я хотел бы иметь возможность рекурсивно копировать целое дерево каталогов. Кто-нибудь знает, как это сделать?

ps: Я использую Ubuntu 11.04 с Nautilus 2.32.2.1 и Cadaver 0.23.3

решение1

В этом ответе обобщены предложения, высказанные в комментариях @Ocaso и @Rinzwind.

Я использовал это:

wget -r -nH -np --cut-dirs=1 --no-check-certificate -U Mozilla --user={uname} 
    --password={pwd} https://my-host/my-webdav-dir/my-dir-in-webdav

Не идеально (скачал много «index.html?C=M;O=D» и т. п.), но в остальном работало нормально.

«-r» выполняет рекурсивную загрузку по ссылкам.

«-np» предотвращает переход к родительским каталогам (иначе вы загрузите весь веб-сайт!).

«-nH» предотвращает создание каталога с именем «my-host» (что мне не нужно).

«--cut-dirs=1» предотвращает создание каталога с именем «my-webdav-dir».

«--no-check-certificate» используется потому, что я использую самоподписанный сертификат на сервере webdav (я также принудительно использую https).

«-U Mozilla» устанавливает в http-запросе в качестве пользовательского агента «Mozilla» — моему серверу webdav это на самом деле не требовалось, но я все равно это включил.

решение2

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

sudo mount -t davfs https://your.remote/path /your/local/mount/point

Примечание: /your/local/mount/pointдля работы это должно быть реально существующим каталогом.

Насколько мне известно, для работы команды достаточно выполнить следующее: sudo apt-get install davfs2(Если требуются дополнительные настройки, прошу прощения, я давно этого не делал.)

(Я добавил это в качестве ответа, потому что считаю, что ответ Лиама не дал достаточно информации.)

решение3

Я понимаю, что это старый вопрос, но я хотел это сделать и нашелrcloneчто похоже на rsync для облака и поддерживает множество различных протоколов, включая WebDAV. Вы используете rclone configдля настройки удаленного, а затем просто делаете rclone copy remote:path .и int все скачает. Вы также можете использовать rclone sync remote:path .и он будет проверять файлы и копировать только обновления. Это программа golang, поэтому она очень портативна.

решение4

Вы можете использовать dav2fs для монтирования сервера webdav, а затем получить к нему доступ, как к локальному каталогу.

Связанный контент