O rsync tem uma maneira de fazer cópias desconectadas . Em outras palavras, o rsync pode (conceitualmente) diferenciar uma árvore de diretórios e produzir um arquivo de patch que você poderá aplicar posteriormente em qualquer número de arquivos idênticos à fonte original.
Requer que você invoque o rsync com o mestre e espelhe com --write-batch
; produz um arquivo. Em seguida, você transfere esse arquivo para qualquer número de outros destinos e aplica o lote a cada um desses destinos usando --read-batch
.
Se você mantiver uma cópia local do último estado de sincronização (ou seja, uma cópia da aparência dos espelhos agora) na mesma máquina que o mestre, poderá gerar esse "patch" no mestre sem entrar em contato com nenhum espelho:
No mestre:
rsync --write-batch=my-batch.rsync /master/data /current/mirror
Adicione as outras opções que desejar. Isso fará duas coisas:
- Isso fará
/current/mirror
mudanças para refletir/master/data
- Ele criará um arquivo de correção binário (ou arquivo em lote) chamado
my-batch.rsync
para uso posterior.
Transfira o my-batch.rsync
arquivo do mestre para todos os seus espelhos e, em seguida, aplique o patch, por assim dizer:
rsync --read-batch=my-batch.rsync /local/mirror
Benefícios desta abordagem:
- mestre não está inundado
- não é necessário coordenar / ter acesso ao (s) mestre (s) ao mesmo tempo
- pessoas diferentes com privilégios diferentes podem fazer o trabalho no mestre e no (s) espelho (s).
- não é necessário ter um canal TCP (ssh, netcat, o que seja; o arquivo pode ser enviado por e-mail ;-))
- espelhos offline podem ser sincronizados mais tarde (basta colocá-los on-line e aplicar o patch)
- todos os espelhos com garantia de serem idênticos (já que aplicam o mesmo "patch")
- todos os espelhos podem ser atualizados simultaneamente (uma vez que
--read-batch
é apenas intensivo de cpu / io no próprio espelho)