La synchronisation

Fusionner les modifications apportées de plusieurs copies d'une base de données.


Introduction et exigences

KeePass 2.x dispose d'un puissant mécanisme de synchronisation intégré. Les modifications apportées à plusieurs copies d'un fichier de base de données peuvent être fusionnées en toute sécurité.

Après avoir synchronisé deux fichiers A et B, A et B sont à jour (c'est-à-dire que KeePass enregistre les données fusionnées aux deux emplacements lors de l'exécution d'une synchronisation).

Exigences :

  • Si les fichiers à synchroniser sont accessibles via un protocole supporté par défaut par KeePass (par exemple : des fichiers sur un disque dur local ou un partage réseau, FTP, HTTP, HTTPS, WebDAV, etc., voir la page 'Charger/Enregistrer depuis/vers une adresse (URL)' pour des détails), alors aucun greffon/extension n'est requis.
  • Si l'un des fichiers à synchroniser doit être accessible via SCP, SFTP ou FTPS, alors vous avez besoin du greffon IOProtocolExt, qui ajoute la prise en charge de ces protocoles à KeePass.
  • Si l'un des fichiers à synchroniser est stocké dans un stockage en nuage : pour la plupart des stockages en nuage, il existe une intégration avec le système de fichiers local de disponible (c'est-à-dire que vous pouvez accéder à vos fichiers stockés à l'aide de l'Explorateur Windows). Par exemple : Dropbox, Microsoft OneDrive et Google Drive fournissent une telle intégration. Si une telle intégration est disponible, alors il est recommandé d'accéder à votre fichier de base de données de cette façon ; cela fonctionne souvent mieux que d'y accéder via un protocole comme FTP ou WebDAV. Si aucune intégration de ce type n'est disponible et que votre stockage en nuage n'est pas non plus accessible via un protocole standard, alors un greffon spécifique de KeePass pour ce stockage en nuage pourrait être disponible.


Appel d'une synchronisation

Il existe plusieurs manières d'invoquer une synchronisation :

  • Manuellement : une synchronisation peut être démarrée manuellement en naviguant vers 'Fichier''Synchroniser' et en cliquant sur 'Synchroniser avec le fichier...' ou 'Synchroniser avec l'adresse (URL)...' (selon que le fichier à synchroniser est stocké sur un lecteur local/partage réseau ou sur un serveur accessible via une URL). Si vous avez déjà ouvert ou synchronisé avec le fichier cible, alors vous pouvez aussi simplement pointer sur 'Fichiers récents' (dans le menu 'Synchroniser') et sélectionner le fichier. La synchronisation manuelle n'est possible que lorsque la base de données actuellement ouverte est un fichier local (les fichiers sur un partage réseau sont ici considérés comme des fichiers locaux) ; lorsque vous avez ouvert un fichier depuis un serveur à l'aide d'une URL, le menu 'Synchroniser' est désactivé.
  • La commande 'Enregistrer' : lors de l'appel de la commande 'Enregistrer', KeePass vérifie si le fichier sur le disque/serveur a été modifié pendant que vous l'éditiez. S'il a été modifié, alors KeePass vous demande si vous souhaitez écraser ou synchroniser avec le fichier. Remarquez que cela s'applique uniquement à la commande 'Enregistrer', pas à la commande 'Enregistrer sous'. Voir la page Utilisateur multiple pour plus de détails (section 'KeePass 2.x : Synchroniser ou écraser').
  • Déclencheurs : Dans des situations plus complexes, vous pouvez utiliser l'action de déclenchement de synchronisation. Voir la page 'Déclencheurs' pour plus de détails.
  • Script : Afin d'effectuer une synchronisation sans ouvrir KeePass, la commande de synchronisation de KPScript peut être utilisée. Consultez la page d'aide de KPScript 'Opérations à commande unique' pour plus de détails.


Détails techniques

L'algorithme de synchronisation est assez complexe et il faudrait de nombreuses pages pour décrire en détail son fonctionnement. Les développeurs intéressés par cela peuvent consulter le code source de KeePass. Voici les propriétés les plus importantes de l'algorithme de synchronisation :

  • Afin de décider quelle copie d'un objet est la plus récente, KeePass utilise principalement l'heure de la dernière modification de l'objet (que KeePass met automatiquement à jour à chaque fois que l'objet est modifié).
  • La synchronisation est effectuée au niveau de l'entrée. Ceci par exemple signifie qu'une combinaison nom d'utilisateur/mot de passe est toujours cohérente (la synchronisation au niveau du champ ne sera pas mise en œuvre, car les combinaisons pourraient devenir incohérentes avec cela).
  • En cas de mises à jour et de collisions parallèles, KeePass essaie de stocker toutes les informations dans un endroit approprié. Par exemple : lorsque vous avez une entrée E dans une base de données A, faites une copie B de A, modifiez E dans B, modifiez E dans A et synchronisez A et B, alors E dans A est traité comme courant et les modifications apportées à E dans B sont stockés comme une entrée d'historique de E (voir l'onglet 'Historique' dans la boîte de dialogue de l'entrée), c'est-à-dire que les modifications apportées dans B ne sont pas perdues.


Schémas de synchronisation avancés

  • Synchronisation locale↔Maître :
    Un protocole de synchronisation qui empêche la perte de données lorsque les fichiers de base de données sont écrasés par d'autres applications (par exemple : un logiciel de service de stockage en nuage), à ​​l'aide d'un déclencheur.
  • Greffons.
    Il existe des greffons pour des protocoles de synchronisation plus sophistiqués. Par exemple : pour synchroniser seulement un sous-ensemble d'entrées.