Detectando alterações de arquivo

O provedor de sincronização de arquivos do Sync Framework detecta automaticamente as alterações feitas em arquivos e pastas no escopo da sincronização.

Detecção de alteração explícita e implícita

A detecção de alteração deve ser executada antes de a sessão de sincronização ser iniciada. Por padrão, a detecção de alteração é executada automaticamente na primeira vez que o Sync Framework chama GetChangeBatch ou ProcessChangeBatch no provedor.

Código gerenciado Se o aplicativo especificar o sinalizador ExplicitDetectChanges quando inicializar o provedor, o aplicativo deve chamar explicitamente o método DetectChanges antes de iniciar a sessão.

Código não gerenciado Se o aplicativo especificar o sinalizador FILESYNC_INIT_FLAG_DISABLE_IMPLICIT_DETECT_CHANGES quando inicializar o provedor, o aplicativo deverá chamar explicitamente o método IFileSyncProvider::DetectChanges antes de iniciar a sessão.

Algoritmo de detecção de alteração interno

O Sync Framework tem um algoritmo interno para detectar alterações feitas nos arquivos e pastas no escopo da sincronização.

Uma alteração é relatada quando quaisquer das propriedades seguintes é alterada:

  • O horário da última modificação em um arquivo.

  • Se o hash estiver habilitado, o valor do hash calculado para o arquivo.

  • O tamanho do arquivo.

  • O nome do arquivo ou pasta. Essa verificação diferencia maiúsculas de minúsculas.

  • Quaisquer dos atributos de arquivo tratados pelo provedor.

A movimentação ou a renomeação de um arquivo é relatada quando se descobre um arquivo com a mesma hora de criação, mesmo tamanho e valor de hash (quando o hash é usado) de um arquivo já conhecido, mas com um nome ou caminho diferente. Se for encontrado mais de um arquivo que atenda a esses critérios, o Sync Framework agirá como se o arquivo original tenha sido excluído e novos arquivos tenham sido criados.

O Sync Framework trata a movimentação ou renomeação de uma pasta como se a pasta antiga tenha sido excluída e uma nova pasta, criada. Os arquivos na pasta são relatados como movimentações. Consequentemente, nesse caso, os dados de arquivo normalmente não precisam ser reenviados.

Calculando um valor de hash para detecção de alteração

Se o aplicativo especificar o sinalizador CompareFileStreams (para código gerenciado) ou o sinalizador FILESYNC_INIT_FLAG_USE_HASHING (para código não gerenciado) quando inicializa o provedor, o provedor calcula um valor de hash para cada arquivo usando todo o conteúdo do fluxo de arquivo. O provedor compara esses valores de hash, permitindo uma detecção de alteração mais robusta apesar do desempenho ligeiramente diminuído.

Consulte também

Referência

Interface IFileSyncProvider
Enumeração FILESYNC_INIT_FLAGS
FileSyncProvider
FileSyncOptions

Conceitos

Sincronizando arquivos