
У меня есть локальная папка, которую я хочу синхронизировать с сервером webdav. В моей папке много файлов, и мне нужно, чтобы после редактирования некоторых файлов или добавления/удаления папок я мог синхронизировать изменения с сервером webdav, игнорируя то, что находится на сервере, и всегда используя мои файлы. Есть ли какой-либо скрипт или инструмент, который я могу использовать из командной строки, чтобы сделать это?
И увеличение ресурса не является решением.
решение1
WebDav-sync — это Java-программа, разработанная для этой цели.http://www.re.be/webdav_sync/index.xhtml
решение2
mkdir /volumes/web_dav/
mount_webdav -s -i https://<web_dav_domain_name:port>/ /volumes/web_dav/
rsync -rvz /your_directory/ /volumes/web_dav/
umount /volumes/web_dav/
решение3
Использование rsync на смонтированном диске webdav может привести к потере эффективности инкрементального резервного копирования. Алгоритм контрольной суммы в rsync заставляет удаленные файлы (полностью или частично) скачиваться и храниться локально, что может привести к потере пропускной способности загрузки.
Неидеальным решением является использование флага "--size-only" для сохранения bw:
rsync -ahvP --size-only /your/source/path /your/webdav_mount/path/
Это не сработает, если файлы будут обновлены, но по-прежнему будут иметь те же размеры.
решение4
Кажется, что быстрым решением для выполнения такой односторонней синхронизации является повторное использование и изменение скрипта, который я предложил в качестве ответа.здесьпросто добавив что-то вроде test -d "$src" && echo "rmcol \"$src\"";
сразу после строки с одной открывающейся скобкой.
Обратите внимание, что это подразумевает повторную передачу всего содержимого каждый раз, поэтому используйте этот метод только для «небольших» каталогов; в противном случае решение, прибегающее к монтированию и использованию, rsync
было бы гораздо более подходящим.