Когда я пытаюсь скопировать папку с сервера webdav на локальный диск с помощью Nautilus, он копирует то, что выглядит как файл манифеста (xml со списком каталогов и т. Д.). С трупом я получаю пустой файл.
Я хотел бы иметь возможность рекурсивно копировать целое дерево каталогов. Кто-нибудь знает, как я могу это сделать?
PS: я использую Ubuntu 11.04 с Nautilus 2.32.2.1 и Cadaver 0.23.3
Вы можете использовать dav2fs для монтирования сервера webdav, а затем вы можете получить к нему доступ, как к локальному каталогу.
В этом ответе обобщены предложения, высказанные в комментариях @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» - моему веб-серверу на самом деле это не нужно, но я все равно включил его.
На самом деле с Cadaver вы можете cd
перейти в каталог, из которого вы хотите загрузить файлы, и mget *
.
Кроме того, вы можете смонтировать его как путь, к которому вы будете обращаться как часть вашей собственной файловой системы.
sudo mount -t davfs https://your.remote/path /your/local/mount/point
Примечание: /your/local/mount/point
должен быть реально существующим каталогом, чтобы это работало.
Насколько я знаю, вам нужно всего лишь выполнить следующее, чтобы заставить команду работать: sudo apt-get install davfs2
(Если требуется больше конфигурации, я прошу прощения, это было давно, я сделал это). 116] (я добавил это как ответ, потому что чувствую, что ответ Лиама дал недостаточно информации.)
Я понимаю, что это старый вопрос, но я хотел сделать это и нашел rclone, который похож на rsync для облака и поддерживает множество различных протоколов. включая WebDAV. Вы используете rclone config
для настройки удаленного сервера, а затем просто выполняете rclone copy remote:path .
и int все загрузит. Вы также можете использовать rclone sync remote:path .
, и он будет проверять файлы и копировать только обновления. Это программа golang, поэтому она очень портативна.