У меня есть папка A / и удаленная папка A /. Теперь я запускаю что-то вроде этого в 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
Есть более простые решения? Спасибо.