Guia de introdução à sincronização de arquivos

O Sync Framework inclui um provedor de sincronização de arquivos que estende o objeto UnmanagedSyncProviderWrapper (para código gerenciado) ou a interface IKnowledgeSyncProvider (para código não gerenciado) para simplificar a criação de um aplicativo que sincroniza arquivos e pastas entre sistemas de arquivos.

Criando e inicializando o provedor

Código gerenciado Um aplicativo cria um objeto FileSyncProvider. Os caminhos e as opções de configuração são especificados no construtor.

Código não gerenciado Um aplicativo cria um objeto IFileSyncProvider passando CLSID_FileSyncProvider e IID_IFileSyncProvider para CoCreateInstance. Os caminhos e as opções de configuração são especificados chamando o método Initialize.

Os caminhos especificados quando o provedor é construído ou inicializado definem a pasta raiz a ser sincronizada e a pasta e o nome de arquivo nos quais os metadados de sincronização são armazenados. Opcionalmente, o aplicativo também pode especificar uma pasta para armazenar arquivos temporários e outra para armazenar arquivos atualizados devido a um conflito. Eles devem ser caminhos válidos e devem existir antes de o provedor ser inicializado.

Dica

Para todos os métodos no provedor de sincronização de arquivos, os caminhos não podem exceder MAX_PATH.

Um conjunto de sinalizadores de configuração pode ser especificado quando o provedor é construído ou inicializado. Esses sinalizadores modificam o comportamento do provedor de diversas maneiras, como para melhorar a detecção de alterações calculando um valor de hash para cada arquivo ou para mover arquivos excluídos para a lixeira em vez de excluí-los permanentemente. Esses sinalizadores são representados por FileSyncOptions (para código gerenciado) ou FILESYNC_INIT_FLAGS (para código não gerenciado).

Depois que os provedores de origem e de destino são criados e inicializados, eles podem ser passados para uma sessão de sincronização e a sincronização pode ser iniciada.

Atributos do arquivo

O Sync Framework reconhece apenas estes atributos de arquivo e pasta:

  • FILE_ATTRIBUTE_DIRECTORY

  • FILE_ATTRIBUTE_READONLY

  • FILE_ATTRIBUTE_HIDDEN

  • FILE_ATTRIBUTE_SYSTEM

  • FILE_ATTRIBUTE_TEMPORARY

Outros atributos de arquivo são ignorados e não são propagados.

Segurança e criptografia

O provedor não executa nenhuma autenticação nas pastas envolvidas na sincronização. O aplicativo deve autenticar as pastas usadas antes de passá-las para o provedor.

As informações de segurança, como a DACL (Lista de Controle de Acesso Discricionário), não são propagadas. É função do aplicativo ou do usuário proteger corretamente as pastas de destino para ajudar a impedir acesso não autorizado.

Os arquivos em uma pasta criptografada são descriptografados antes de serem enviados e não são criptografados na pasta de destino. Lembre-se de que isso significa que mesmo se a pasta de origem for criptografada, os arquivos não serão criptografados quando forem enviados. Para ajudar a evitar acesso não autorizado ou violações, o canal de comunicação entre o provedor e a pasta deve ser confiável.

Os metadados de sincronização e os arquivos temporários são armazenados em pastas especificadas quando o provedor é inicializado. Essas pastas devem ser protegidas adequadamente e a pasta temporária, limpa, para evitar a divulgação indesejável de informações, pois esses arquivos podem conter dados de usuário.

Garantia de consistência

O Sync Framework garante que, quando o provedor de sincronização de arquivos aplicar uma alteração, se não for possível aplicar todo o conteúdo de um fluxo de arquivo, então, nenhum conteúdo será. Isso é feito em parte abrindo os arquivos em modo de compartilhamento exclusivo. Isso significa que o arquivo não pode ser aberto ou excluído por outro aplicativo enquanto seu identificador não for fechado. Para obter mais informações, consulte a função CreateFile na documentação do Microsoft Win32.

Se o arquivo não puder ser aberto em modo de compartilhamento exclusivo, ele será ignorado. O arquivo ignorado será registrado nos metadados de forma que possa ser processado adequadamente em sessões futuras.

Armazenamento de metadados

O provedor de sincronização de arquivos usa o serviço de armazenamento de metadados para armazenar todos os metadados da sincronização em um repositório de dados personalizado. O repositório de metadados é um único arquivo. Esse arquivo pode ser armazenado com arquivos e pastas que serão sincronizados ou em outro local especificado durante a inicialização do provedor. Para obter mais informações sobre os componentes do serviço de armazenamento de metadados, consulte Sync Framework Metadata Storage Service.

Fazendo backup e restaurando uma réplica do sistema de arquivos

Quando uma réplica do sistema de arquivos é restaurada de um backup, podem ocorrer problemas com a sincronização. Por exemplo, alterações locais feitas após a restauração podem não ser propagadas para outras réplicas. Isso ocorre porque a contagem em escala usada para atribuir versões às alterações na réplica de origem podem fazer com que as alterações sejam detectadas como obsoletas por outras réplicas.

Para garantir que essa situação não ocorra, quando uma réplica do sistema de arquivos for restaurada de um backup, descarte os metadados de sincronização e manipule a réplica como nova, atribuindo a ela uma nova ID de réplica. Em seguida, o provedor de sincronização de arquivos poderá criar metadados de sincronização para a réplica e sincronizá-la corretamente com outras réplicas na comunidade.

Consulte também

Referência

Interface IFileSyncProvider
Enumeração FILESYNC_INIT_FLAGS
FileSyncProvider
FileSyncOptions

Conceitos

Sincronizando arquivos