If you then make changes to the 2GB file on computer A, what happens?
Existem várias maneiras de detectar a mudança.
-
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.
-
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.
-
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).