У меня есть локальная папка, которую я хочу синхронизировать с сервером webdav. В моей папке много файлов, и мне понадобится это после того, как я отредактирую некоторые файлы или добавлю / удалю папку, чтобы иметь возможность синхронизировать изменения на сервере webdav, игнорируя то, что находится на сервере и всегда используя мои файлы. Есть ли сценарий или инструмент, который я могу использовать из командной строки, чтобы сделать это?

И монтаж ресурса не является решением проблемы.

5 ответов5

1

WebDav-sync - это Java-программа, разработанная для этой цели. http://www.re.be/webdav_sync/index.xhtml

1

Использование rsync на подключенном веб-диске может привести к потере эффективности добавочного резервного копирования. Алгоритм контрольной суммы на rsync позволяет удаленно (полностью или частично) загружать и хранить файлы локально, а затем может тратить трафик на загрузку.

Не идеальным решением является использование флага "--size-only" для сохранения bw:

rsync -ahvP --size-only /your/source/path /your/webdav_mount/path/

Это не будет работать, если файлы будут обновлены, но при этом будут иметь те же размеры.

1
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/
0

Rclone - это программа односторонней синхронизации, которая поддерживает WebDAV и многие другие хранилища данных. Он делает то, что вам нужно: сравнивает локальное и удаленное (WebDAV или другое) местоположение и копирует только измененные файлы, так же, как rsync делает поверх SFTP/SCP. Он имеет некоторые параметры командной строки для управления поведением синхронизации, например, хотите ли вы, чтобы удаленные файлы были удалены, если они были удалены локально.

Он доступен для OSX, Windows и Linux.

0

Кажется , что быстрое решение выполнить такую одностороннюю синхронизацию, чтобы повторно использовать и модифицировать сценарий я предложил в качестве ответа здесь , просто добавив что - то вроде test -d "$src" && echo "rmcol \"$src\""; сразу после линии с одной открывающей скобкой.

Обратите внимание, что это включает в себя повторную передачу всего содержимого каждый раз, поэтому используйте его только для "маленьких" каталогов; в противном случае решение, использующее монтирование и использование rsync было бы гораздо более подходящим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .