Pergunta

Eu tenho um conjunto de nós geograficamente remotos com sistemas operacionais heterogêneos que precisam transferir arquivos e atualizações usando um programa Java que estou escrevendo.No momento preciso enviar o arquivo inteiro novamente se o arquivo for alterado.Existe uma maneira de determinar as seções dos arquivos que são diferentes e apenas enviá-las (observe que esses arquivos não são necessariamente texto, podem ter qualquer formato).A única maneira que consigo pensar é dividir o arquivo em blocos, fazer o hash dos blocos e enviar os hashes de volta ao solicitante, que então solicita apenas os blocos necessários, mas para blocos pequenos e arquivos grandes, isso é uma grande sobrecarga, então existe algum maneira de enviar alguma mensagem descrevendo meu arquivo de forma que a mensagem singular possa ser analisada para fornecer uma lista dos blocos que precisam ser transmitidos?

A maioria das funções de resumo são projetadas de forma que uma pequena alteração nos dados resulte em uma grande alteração em toda a saída do hash. Basicamente, preciso do inverso disso, que funcionará em todos os sistemas operacionais.

Foi útil?

Solução

Se entendi sua pergunta corretamente, você precisa manter os arquivos sincronizados em dois sistemas.Existe uma ferramenta chamada rsync que pode sincronizar dois arquivos (ou diretórios inteiros) enviando apenas as alterações feitas no arquivo.

Você também pode estar interessado no Algoritmo Rsync.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top