Двухсторонняя синхронизация с rsync

У меня есть папка / и удаленная папка /. Теперь я запускаю что-то вроде этого на Makefile:

get-music:
 rsync -avzru server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music

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

Это работает очень хорошо, только если есть только обновления или новые файлы в будущем. Если есть удаления, это ничего не делает.

В rsync есть опции --delete и --delete-after, помогающие выполнить то, что я хочу, но дело в том, что он не работает при двухсторонней синхронизации.

Если я хочу удалить серверные файлы в синхронизации, когда локальные файлы были удалены, это работает, но если по какой-то причине (объяснено после) у меня есть некоторые файлы, которых нет на сервере, но они существуют локально, и они были удалены, Я хочу локально удалить их, а не скопировать на сервер (как это происходит).

Дело в том, что у меня есть 3 машины в контексте:

рабочий столноутбукдомашний сервер

Таким образом, иногда на сервере будут файлы, которые были удалены с синхронизацией с ноутбуком, например, и затем, когда я запускаю синхронизацию с моим рабочим столом (на котором все еще существуют удаленные файлы сервера), я хочу, чтобы эти файлы были удалены, а не удалены. скопировал снова на сервер.

Я думаю, это возможно только с базой данных и отслеживанием операций: P

Есть более простые решения? Спасибо.

Ответы на вопрос(9)

Ваш ответ на вопрос