
Когда я пытаюсь скопировать папку с сервера 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, а затем получить к нему доступ, как к локальному каталогу.