Eu tenho uma pasta a / e uma pasta remota A /. Agora eu executo 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 eu faço sync-music, ele primeiro pega todos os diffs do servidor para o local e depois o oposto, enviando todos os diffs do local para o servidor.
Isso funciona muito bem apenas se houver apenas atualizações ou novos arquivos no futuro. Se houver exclusões, ele não fará nada.
No rsync, existem as opções --delete e --delete-after para ajudar a realizar o que eu quero, mas o fato é que não funciona em uma sincronização bidirecional.
Se eu quiser excluir arquivos do servidor em um syn, quando os arquivos locais foram excluídos, funciona, mas se, por algum motivo (explicado a seguir) eu 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 copiados pelo servidor (como acontece).
O fato é que tenho 3 máquinas em contexto:
- Área de Trabalho
- caderno
- servidor doméstico
Então, às vezes, o servidor terá arquivos que foram excluídos com uma sincronização de notebook, por exemplo, e então, quando eu executar uma sincronização com meu desktop (onde os arquivos do servidor excluídos ainda existem), quero que esses arquivos sejam excluídos e não sejam copiado novamente para o servidor.
Acho que isso só é possível com um banco de dados e controle de operações: P
Alguma solução mais simples? Obrigado.