Is rsync smart/efficient at detecting which files to copy/delete?
O Rsync é extremamente eficiente na detecção e atualização de arquivos. Dependendo de como seus arquivos são alterados , você pode achar que um número menor de arquivos grandes é muito mais fácil de sincronizar, em seguida, muitos arquivos pequenos. Dependendo de quais opções você escolher, em cada execução, vai stat () cada arquivo em ambos os lados, e então transfere as mudanças se os arquivos forem diferentes. Se apenas um pequeno número de seus arquivos está mudando, essa etapa para procurar arquivos alterados pode ser muito cara. Muitos fatores entram em jogo sobre quanto tempo o rsync leva. Se você é sério em tentar isso, você deve fazer muitos testes em dados reais para ver como as coisas funcionam.
If the master crashes and a slave takes over for an hour (for example), is making the master up-to-date again as simple as running rsync the other way round (slave to master)?
Deve ser.
Is there any possibility of implementing multi-master systems with rsync?
O Unison, que usa as bibliotecas rsync, permite uma sincronização bidirecional. Deve permitir atualizações em ambos os lados. Com as opções corretas, ele pode identificar conflitos e salvar backups de todos os arquivos em que foi feita uma alteração nas duas extremidades.
Sem saber mais sobre os detalhes, não posso dizer com confiança que este é o caminho a percorrer. Talvez você precise examinar o DRBD ou alguma outra abordagem de dispositivo / sistema de arquivos em cluster que sincronize as coisas em um nível inferior.