Como o Windows Live Mesh sincroniza arquivos entre computadores?

6

Computador A e Computador B estão sincronizando uma determinada pasta. Você adiciona um arquivo de 2GB à pasta no Computador A, naturalmente ele é empurrado pelo fio para o Computador B, embora lentamente. Se você fizer alterações no arquivo de 2 GB no computador A, o que acontece?

Eu acho que as escolhas são realmente

a) ele envia todo o arquivo de 2 GB para o Computador B ou   b) analisa as diferenças entre os dois arquivos, e envia apenas as mudanças através do fio. O serviço de malha do computador B aplica essas alterações.

Mas o que é isso?

Além disso, o que acontece se eu mover esse arquivo de 2GB para uma subpasta?

    
por Ken Pespisa 28.05.2011 / 02:05

1 resposta

5

If you then make changes to the 2GB file on computer A, what happens?

Existem várias maneiras de detectar a mudança.

  1. Você pode alterar o arquivo e ver se o hash é diferente (caro). Este é o método que muitos patchers MMO usam para verificações de integridade de arquivos, etc.

  2. O sistema de arquivos mantém um último campo modificado. Portanto, indexar o arquivo por data de modificação é relativamente rentável. Então você simplesmente precisa pesquisar o diretório regularmente e atualizar as coisas conforme necessário.

  3. Muitos sistemas operacionais permitem que você se inscreva em uma lista de arquivos / pastas e seja notificado sobre quando eles mudam, novos arquivos são adicionados, etc.

Em seguida, precisamos enviar apenas as alterações. Muitos protocolos e algoritmos suportam apenas o envio das alterações. O Rsync é um protocolo bem usado (e provavelmente semelhante ao que a malha faz) que traduz apenas a diferença entre máquinas com compressão, por isso é bastante eficiente de largura de banda. O problema com arquivos grandes é que uma alteração pode causar uma enorme cadeia de pequenas alterações que é bastante difícil de se diferenciar eficientemente.

Tenho certeza de que a malha usa diferencial e compactação ao transmitir entre máquinas. Mas é um produto de código fechado e não consegui encontrar nada que confirme isso.

Also, what happens if I move that 2GB file to a subfolder?

Na maioria dos casos, você precisará fazer o download das alterações novamente. Para todos os efeitos, o programa verá isso como uma exclusão e, em seguida, um novo arquivo sendo adicionado ao novo local.

Teoricamente, você pode agrupar todos os arquivos e verificar se a nova adição já está armazenada, comparando os hashes. Isso seria bastante caro (por exemplo, se você estiver adicionando 1.000 arquivos pequenos).

    
por 28.05.2011 / 02:39