Os programas de sincronização, como o Dropbox, geralmente rastreiam alterações de arquivo, fazendo comparações de byte a byte, ou usando hashes, ou usando diff
/ mantendo logs de confirmação locais, como controle de versão, ou o quê?
fonte
Os programas de sincronização, como o Dropbox, geralmente rastreiam alterações de arquivo, fazendo comparações de byte a byte, ou usando hashes, ou usando diff
/ mantendo logs de confirmação locais, como controle de versão, ou o quê?
No Windows, existe um mecanismo para o sistema operacional alertá-lo quando houver uma alteração na estrutura de diretórios 'assistida' - FindFirstChangeNotification (). Quando isso indica que um arquivo foi alterado, um aplicativo pode comparar arquivos no diretório alterado para encontrar os arquivos reais que foram alterados, analisando tamanho, data de modificação, hash etc.
Isso (como Michael aponta abaixo) é algo que cada plataforma forneceria de alguma maneira. Eu não estava dizendo que esse tipo de coisa era exclusiva do Windows.
Por fim, para comparar arquivos, você precisa comparar cada byte - de que outra forma você notaria uma alteração de byte único?
Na realidade, você lê blocos de bytes e calcula um valor de hash, e depois verifica uma lista de hashes. Um bom exemplo é " rsync "
Até onde eu sei, o dropbox deduz apenas arquivos inteiros, então calcula um hash do arquivo inteiro para verificar o mesmo arquivo
fonte
O .NET, por exemplo, tem uma classe FileSystemWatcher. Tenho certeza de que outros idiomas e tempos de execução de baixo nível podem fornecer recursos semelhantes.
fonte