I want to use Syncthing to synchronise my Calibre library across two devices (desktop and laptop, both running Linux). I pointed Syncthing at my Calibre directories and so far it seems to work: changes made to the database on one device get propagated to the other. However, I’m a bit spooked by the warnings made in the Calibre documentation:
If you must share the actual library, use a file syncing tool like DropBox or rsync instead of a networked drive. If you are using a file-syncing tool it is essential that you make sure that both calibre and the file syncing tool do not try to access the calibre library at the same time. In other words, do not run the file syncing tool and calibre at the same time.
So this is what I’ve been doing:
make sure desktop does not have Syncthing running
use Calibre on desktop, make changes (add PDFs, edit metadata, etc)
close Calibre
run Syncthing on desktop and allow the changes to propagate to laptop
close Syncthing on laptop
open Calibre on laptop
etc
While this works, it’s pretty cumbersome, and not practical because sooner or later I’m going to forget and end up with Calibre and Syncthing running at the same time, and potentially corrupt the Calibre database.
Is there a way to tell Syncthing to automatically check whether Calibre is open, and if so, not to do any syncing? This could also be some kind of external shell script.
“access” here should be interpreted as “modify”. In effect this means make sure Syncthing is up to date when you start Calibre (as far as the Calibre library is concerned), and don’t run Calibre on more than one synced computer at the same time.
I have also synced my Calibre library including the sqlite index database. As @calmh suggests, don’t open it one multiple computers at once. Sqlite databases are not designed for this. This can now be a problem because “it is made possible” to use it on “two machines at the same time” which can corrupt or conflict the synchronisation.
Sorry if I hijack the discution but I think we might be looking for the same solution.
My problem is related as I have issues with Syncthing/Calibre (and Calibre is not open on second PC).
Do you know any program that could behave like this :
IF program.exe active THEN syncthing-pause
When I use Calibre, a lot of files are modified in its Library folder.
It looks like there’s no issue at first.
But when I go in the library folder, I find some CONFLICTS folders.
It’s like there’s too many updates of the library folder during Syncthing sync and then it thinks that the backup is the latest update and syncback “old” files.
I’m not sure if I’m clear… So just in case :
It’s almost like FILE is updated 4 or 5 times by Calibre during Syncthing sync that is still sending update 3 and then thinks that update 3 is the latest and sync back / override update 5 resulting in a conflict.
That’s the only program I have issues with for now and I use Syncthing since a year.
It is possible Calibre does weird stuff, I have one true origin of my library on my iMac desktop and set it to Send Only mode. Which pushes it to my backup machines using syncthing. I’m not syncing between two machines with Send & Receive folder type. So my case is different than yours which can result in conflicts.
What you could do is set disable the Watch for changes (share -> edit -> advanced -> scanning, and set the rescan interval something like 5 minutes or so). This will not totally prevent your conflict but reduces the file/folder change notifications from the filesystem being distributed back and fort.