Menu

sync keepass databases

jgt
2014-12-28
2015-01-04
  • jgt

    jgt - 2014-12-28

    So far I have had zero success in setting up the sync for the keepass databases on my three systems. I attempted to find the instructions in the help file but I cannot anything that is helpful for me. I need a simple set of instructions not pointers to several different locations in the help file.
    I'm running Win8.1 on all three systems.
    On my desktop my DB is at R:\Libraries\KeePass - all systems have RW access to this drive and folder
    On my wife's laptop the location is A:\Libraries\KeePass
    On my laptop the location is B:\Libraries\KeePass
    On all three systems I'm using the same name for the DB JGT.kdbx
    All three systems have the same userid
    All three systems are running KeePass 2.28

     
  • steelej

    steelej - 2014-12-29

    To synchronize the database on three computers requires some form of shared storage that is accessible to all computers. While this could be a file share in one of your computers the more flexible way is to used a cloud service. I personally use TeamDrive as I am more comfortable with their security and (important for European users) the servers are located in Europe and out of the clutches of the USA Patriot Act!

    There is information on the KeePass web site on how to set this up - see:

    http://keepass.info/help/kb/trigger_examples.html#dbsync

    Look for the section "Synchronizing with Dropbox / other PC synchronization software".

    Very briefly there is a mater copy held on the file share in the cloud. The cloud copy is replicated to each participating computer. This is FILE replication of the whole database.

    Each participating computer synchronizes at the RECORD level (each individual entry) with the cloud copy. Any differences between the local and cloud databases are exchanged so that these contain the same entries and if necessary (i.e. it has been changed) the cloud copy is written back to the cloud and then replicates to all other computers.

    This sounds more complicated than it really is but is the only way of ensuring that no changes are lost if unrelated changes are made on two computers. The example shows step by step how to create the triggers needed.

    You do not need the local KeePass file paths to be the same on all your machines or even for the names to be the same.

     

    Last edit: steelej 2014-12-29
  • Paul

    Paul - 2014-12-29

    Where do you save the local database, or do you open the database from the share?
    If you open the database from the share you do not need to sync, every time you save you will either just save, or be prompted to sync the changes. Always select the sync option.

    cheers, Paul

     
  • Dude

    Dude - 2014-12-30

    Look at it this way, multiple devices can be setup to access a single database that syncs automatically. With all 3 pc's having RW access to database at R:\Libraries\KeePass, than set it up so all 3 pc's point to it and it only.

     
    • jgt

      jgt - 2015-01-03

      Good idea but if the laptop is not connected to my LAN (example, I'm on the road) I will not be able to open the DB.

       
  • steelej

    steelej - 2014-12-30

    If you have multiple devices sharing a common database directly this is very simple to set up. the snag is that the sharing is at the FILE level.

    Take the case of two devices having access. Device A and Device B both have the database open. Device A modifies one KeePass record and saves the database which overwrites the shared copy. Device B does not know the database has been updated and updates a different record and then saves the database. The changes made from Device A are LOST.

    The recommended method is to have a local copy on each device AND a shared copy accessible to all. Triggers can perform a record synchronization each time the database is saved avoiding the loss of data. There is still a situation where two devices make simultaneous updates to the same Keepass record. in this case the older entry is retained in the record history and is not totally lost.

    It is however your choice. If only one device makes updates and all other devices are effectively read only then the simple file sharing method will work.

     
    • jgt

      jgt - 2015-01-03

      Ultimately I think this is what I want to do. Currently I just setup a DB on my desktop that all three systems access. This resolves my immediate need of insuring all systems have the updates.

      It is my understanding that with all three systems accessing the same DB if anyone system makes an update then the other two can see the update when the system making the update saves.

      My next step is to setup what you are suggesting, e.g. the recommended method. Because it is only me or my wife making an update it is very unlikely that we will both be updating the same record. Most of the time it is only me that is making the updates but often I'm working on my desktop and laptop at the same time via TeamViewer.

       
  • Paul

    Paul - 2015-01-03

    On my desktop my DB is at R:\Libraries\KeePass - all systems have RW access to this drive and folder
    On my wife's laptop the location is A:\Libraries\KeePass
    On my laptop the location is B:\Libraries\KeePass

    1. Use the local file on each machine as the master database.
    2. Set up a trigger on both laptops that syncs to the desktop copy of the database whenever the database is saved on the laptop.
    3. Add a custom button to the toolbar of KeePass on the laptops that syncs to the desktop - for those times you just want to update because you made a change when you were on the road, or on the desktop.

    The syncs will need a condition of "the desktop file exists" for those times you are offline.

    You can base the sync trigger on the sample here.

    cheers, Paul

     
  • steelej

    steelej - 2015-01-03

    If you have two machines that can Update a single copy on a shared drive and each updates the shared database file then data WILL BE LOST!!!!!

    The data base is read and written as a single file be each computer. There is no record locking. If two computers have the database open and data will be held in their computer's memory. If record A is updated one one machine and then the database file is written to the shared location and then Record B is updated on a second machine without reloading the database first then the changes to record A will be overwritten without any warning.

    If you accept that some data will inevitably be lost then use the shared file you are suggesting. This can only work if both users cooperate and are aware of what the other is doing.

    If you want to ensure that no data is lost then follow the recommended method using a local copy and synchronize to a shared copy.

     
  • Paul

    Paul - 2015-01-04

    rgt seems to understand the possibility of conflict when the same entry is changed at the same time. Even if this does happen, KeePass will save the conflicted data in history, retaining the latest change, based on time stamps.

    cheers, Paul

     

Log in to post a comment.