Sincronização bidirecional com rsync

Eu tenho uma pasta a / e uma pasta remota A /. Agora eu corro algo assim em um 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

Quando faço a sincronização, ele obtém todas as diferenças de servidor para local e depois o oposto, enviando todas as diferenças de local para servidor.

Isso funciona muito bem apenas se houver apenas atualizações ou novos arquivos no futuro. Se houver exclusões, isso não fará nada.

No rsync, existem as opções --delete e --delete-after para ajudar a realizar o que eu quero, mas o importante é que ele não funciona em uma sincronização bidirecional.

Se eu quiser excluir os arquivos do servidor em uma sincronização, quando os arquivos locais forem excluídos, funcionará, mas se, por algum motivo (explicado a seguir), tiver alguns arquivos que não estão no servidor, mas existem localmente e foram excluídos, Eu quero removê-los localmente e não o servidor copiado (como acontece).

O problema é que tenho 3 máquinas no contexto:

Área de Trabalhocadernoservidor doméstico

Portanto, às vezes, o servidor terá arquivos que foram excluídos com uma sincronização de notebook, por exemplo, e depois, quando eu executo uma sincronização com minha área de trabalho (onde ainda existem os arquivos do servidor excluído), desejo que esses arquivos sejam excluídos e não sejam copiado novamente para o servidor.

Eu acho que isso só é possível com um banco de dados e faixa de operações: P

Alguma solução mais simples? Obrigado.

questionAnswers(9)

yourAnswerToTheQuestion