Я сталкиваюсь с довольно простой ситуацией, я должен загрузить, как есть, большое дерево файлов на сервер WebDAV, который доступен через HTTPS. Я должен начать загрузку из окна Linux только с командной строки. Я могу установить программы на коробке.
Я пробовал Cadaver, но он не поддерживает рекурсивную загрузку каталогов.
Знаете ли вы о простых инструментах / сценариях для достижения этой цели?
Хорошо, я нашел кое-что, что сделало это.
Я начал со davpush.pl
скрипта, который можно найти здесь https://github.com/ptillemans/davpush
Некоторые изменения были необходимы:
- заменить все "
dav://
" на "https://
" - добавить "
print POUT "open";
до"print POUT $script;
"
Черт, нужно взломать Perl-скрипт, чтобы просто загрузить грубый каталог. Я все еще ищу простые инструменты / сценарии.
источник
Вот быстро взломанный сценарий оболочки, позволяющий использовать труп :
Если он назван,
davcpy.sh
то команда типапозволяет рекурсивную копию из
в отдаленный по имени
Обратите внимание, что он использует функцию сценариев,
cadaver
чтобы разрешить интерактивный ввод логина / паролей. Я думаю, что он также достаточно надежен для обработки странных имен файлов и каталогов, содержащих пробелы, но я не проверял ни одного подобного случая.источник
Решением может быть Rclone . Это односторонняя программа синхронизации командной строки, похожая на rsync, которая поддерживает WebDAV (среди прочих). Он может рекурсивно копировать каталог, пропуская файлы, которые существуют в месте назначения. Он имеет некоторые параметры командной строки для управления поведением синхронизации, например, хотите ли вы, чтобы целевые файлы были удалены, если они были удалены из источника. Есть пакеты, доступные для многих дистрибутивов, но вы также можете установить и запустить простой двоичный файл. В первый раз вам нужно определить «удаленный»:
После этого вы можете копировать или синхронизировать файлы и каталоги:
источник
Модификация ответа nberth, которая работает на OSX:
Использование такое же. Цитирую ответ Нберта:
источник
Я на Ubuntu Linux. С помощью fuse, (Файловая система в Userspace) и mountdavfs (davfs2) вы можете смонтировать подкаталог на сервере Webdav в качестве локальной папки.
Откройте свой терминал и действуйте следующим образом:
Установите davfs2, если он еще не существует:
sudo apt-get install davfs2
Подключитесь к серверу Webdav:
sudo mount.davfs -o user=knb,rw https://webdav.site.de/data /mnt/somedir
(Владелец файловой системы должен быть введен, иначе права на запись отсутствуют)
Дополнительно мне пришлось ввести эти строки в
/etc/dafs2/davfs2.conf
:См. Https://bugs.launchpad.net/ubuntu/+source/davfs2/+bug/466960.
mount
- Команда - Результат (Последняя строка вывода):https://webdav.mysite.de/icdp on /media/somedir type fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=0,allow_other,max_read=16384,uid=1000,gid=0,helper=davfs)
Также проверьте, есть ли странный файл
~/.davfs2/secrets
- это может быть необходимо для постоянных подключений, которые выживают после перезагрузки.Теперь вы можете выполнять команды вроде,
cp -vr /data/myphotos /media/somedir
и файлы будут рекурсивно скопированы и загружены на сайт webdav.источник