Partager via


Mise en route de la synchronisation des fichiers

Sync Framework inclut un fournisseur de synchronisation de fichiers qui étend l'objet UnmanagedSyncProviderWrapper (pour le code managé) ou l'interface IKnowledgeSyncProvider (pour le code non managé) afin de simplifier la création d'une application qui synchronise des fichiers et des dossiers dans les systèmes de fichiers.

Création et initialisation du fournisseur

Code managé Une application crée un objet FileSyncProvider. Les chemins d'accès et les options de configuration sont spécifiés dans le constructeur.

Code non managé Une application crée un objet IFileSyncProvider en passant CLSID_FileSyncProvider et IID_IFileSyncProvider à CoCreateInstance. Les chemins d'accès et les options de configuration sont spécifiés en appelant la méthode Initialize.

Les chemins d'accès spécifiés quand le fournisseur est construit ou initialisé définissent le dossier racine à synchroniser ainsi que le dossier et le nom de fichier où les métadonnées de synchronisation sont stockées. Facultativement, l'application peut également spécifier un dossier pour stocker des fichiers temporaires et un dossier pour stocker des fichiers mis à jour à cause d'un conflit. Il doit s'agir de chemins d'accès valides qui doivent exister avant l'initialisation du fournisseur.

Notes

Pour toutes les méthodes du fournisseur de synchronisation de fichiers, les chemins d'accès ne peuvent pas dépasser MAX_PATH.

Un jeu d'indicateurs de configuration peut être spécifié quand le fournisseur est construit ou initialisé. Ces indicateurs modifient de plusieurs façons le comportement du fournisseur, par exemple pour améliorer la détection des modifications en calculant une valeur de hachage pour chaque fichier ou pour déplacer des fichiers supprimés vers la Corbeille au lieu de les supprimer définitivement. Ces indicateurs sont représentés par FileSyncOptions (pour le code managé) ou FILESYNC_INIT_FLAGS (pour le code non managé).

Une fois que les fournisseurs de source et de destination ont été créés et initialisés, ils peuvent être passés à une session de synchronisation et la synchronisation peut être démarrée.

Attributs de fichier

Sync Framework reconnaît uniquement les attributs de fichier et de dossier suivants : 

  • FILE_ATTRIBUTE_DIRECTORY

  • FILE_ATTRIBUTE_READONLY

  • FILE_ATTRIBUTE_HIDDEN

  • FILE_ATTRIBUTE_SYSTEM

  • FILE_ATTRIBUTE_TEMPORARY

Les autres attributs de fichier sont ignorés et ne sont pas propagés.

Sécurité et chiffrement

Le fournisseur n'effectue aucune authentification sur les dossiers impliqués dans la synchronisation. L'application doit authentifier les dossiers utilisés avant de les passer au fournisseur.

Les informations de sécurité, telles que la liste de contrôle d'accès discrétionnaire, ne sont pas propagées. Il appartient à l'application ou à l'utilisateur de sécuriser correctement les dossiers de destination pour empêcher tout accès non autorisé.

Les fichiers dans un dossier chiffré sont déchiffrés avant d'être envoyés et ne seront pas chiffrés dans le dossier de destination. Soyez informé que cela signifie que, même si le dossier source est chiffré, les fichiers ne sont toutefois pas chiffrés lorsqu'ils sont envoyés. Pour éviter tout accès non autorisé ou toute falsification, le canal de communication entre le fournisseur et le dossier doit être approuvé.

Les métadonnées de synchronisation et les fichiers temporaires sont stockés dans les dossiers spécifiés quand le fournisseur est initialisé. Ces dossiers doivent être sécurisés convenablement et le dossier temporaire doit être nettoyé pour éviter toute divulgation non souhaitée d'informations, car ces fichiers peuvent contenir des données utilisateur.

Garantie de cohérence

Sync Framework garantit que, lorsque le fournisseur de synchronisation de fichiers applique une modification, si l'intégralité du contenu d'un flux de fichiers ne peut pas être appliquée, aucun contenu ne le sera. Cette opération est effectuée en partie en ouvrant les fichiers en mode de partage exclusif. Cela signifie que le fichier ne peut pas être ouvert ni supprimé par toute autre application jusqu'à ce que son handle soit fermé. Pour plus d'informations, consultez la fonction CreateFile dans la documentation Microsoft Win32.

Si le fichier ne peut pas être ouvert en mode de partage exclusif, il sera ignoré. L'omission sera enregistrée dans les métadonnées afin d'être traitée convenablement dans les futures sessions.

Stockage des métadonnées

Le fournisseur de synchronisation de fichiers utilise le service de stockage des métadonnées pour stocker toutes les métadonnées de synchronisation dans un magasin de données personnalisé. Le magasin des métadonnées est un fichier. Ce fichier peut être stocké avec les fichiers et dossiers à synchroniser ou à un autre emplacement spécifié quand le fournisseur est initialisé. Pour plus d'informations sur les composants du service de stockage des métadonnées, consultez Service de stockage des métadonnées de Sync Framework.

Sauvegarde et restauration du réplica de système de fichiers local

Lorsqu'un réplica de système de fichiers local est restauré à partir d'une sauvegarde, des problèmes peuvent se produire avec la synchronisation. À titre d'exemple, les modifications locales apportées dans le magasin de données après la restauration ne se propageront peut-être pas à d'autres réplicas. Ce cas peut se produire parce que le nombre de cycles utilisé pour attribuer des versions aux modifications sur le réplica source peut entraîner la détection de modifications comme étant obsolètes par d'autres réplicas.

Pour éviter cette situation, lorsqu'un réplica de système de fichiers est restauré à partir d'une sauvegarde, ignorez les métadonnées de synchronisation et traitez le réplica en tant que nouveau réplica, en lui attribuant un nouvel ID de réplica. Le fournisseur de synchronisation de fichiers peut alors créer des métadonnées de synchronisation pour le réplica et le synchroniser de manière correcte avec d'autres réplicas de la communauté.

Voir aussi

Référence

FileSyncProvider

FileSyncOptions

Autres ressources

Synchronisation des fichiers

Interface IFileSyncProvider

Énumération FILESYNC_INIT_FLAGS