
Preciso manter um único arquivo relativamente pequeno atualizado em uma conexão de modem dial-up lenta e instável.
O arquivo é um XML que pode começar com 15K e, duas horas depois, terminar com 500K.
É replicação unidirecional. Minha solução atual continua baixando o arquivo inteiro uma vez a cada minuto. Até agora funciona bem com conexões de banda larga, mas agora tenho que usá-lo em um local onde apenas a conexão discada está disponível. A ilusão de “dados em tempo real” se perde porque o download é lento.
Achei que o rsync poderia me salvar do desenvolvimento de um protocolo proprietário (e deficiente) "somente delta". Gostaria de saber se o rsync proporcionaria benefícios reais neste caso específico.
Portanto, a questão é: o protocolo rsync é adequado para um único arquivo de 15K a 500K?
Responder1
Não neste caso. É melhor você usar algo comodifxmlenviar apenas a diferença entre os arquivos como uma atualização e aplicar o patch na máquina de destino.
Responder2
Bem, fiz isso com o rsync e devo dizer que funcionou bem.
Ele transfere tão poucos dados que consegui reduzir a frequência de atualização para 20 segundos em uma conexão dial-up estreita (um terço da frequência anterior que usamos com banda larga!).
Atualizar um XML de 800kb agora leva 5kb de download + 800 bytes de upload!
Verificar versões quando não há alterações para atualizar leva menos 500 bytes de download + 100 bytes de upload! (Eu transfiro mais bytes digitando em uma sessão normal de chat!)
Muito melhor do que outras soluções diferentes e não precisei programar nada em torno disso. (anteriormente pensamos em adicionar um mecanismo push para iniciar o rsync, mas ainda não precisamos dele. 20 segundos são aceitáveis e a pesquisa é muito leve.)
Muito bem, rsync!
PS: Não experimentei o Git e provavelmente também teria sido uma boa solução.