First of all, I want to be clear saying that I have already searched for this and tryed the solutions, but didn’t worked for me (I’m not a very advanced computer user, so, maybe I did it wrong).
There’s this thing I want to do: I have two computers, both of them with Gnu/Linux and Windows 10 dual boot. In both of them I have a shared NTFS partition, so I can access it with any OS at any time and have all of my documents. But I want to enable Syncthing for both NTFS partitions, so don’t matter what OS am I ussing at any time, I will have both computers always synced.
If the content is the same the database must be the same as well, or you’ll get conflicts or possibly data loss. So keep the config/database together with the files. Even then it’ll probably be suboptimal as it’s likely you’ll get rescans of some or even all of your data on reboot, as the timestamps or permissions will likely look different from the perspective of each OS.
I have exactly the same constellation. I use Windows 10 and Linux Mint on different partitions each on two computers. Additionally on further two computers, but is not so relevant.
In principle, your project works, but it is to be expected that conflict files will arise. In my case there is an installation on each partition, each with its own database. There are no disadvantages other than conflicting files, Im deleting from time to time. If I use only one of the two OS, I have no conflict files.
For this reason I have already considered using the database together on one computer, but I am not aware of the risks associated with software updates that can never take place at the same time. In addition, a path to this shared database would have to be stored in the respective installation.
That’s why I’ve left it so far and initially planned tests for some day.
I partially do the variant two separate DBs for every system with the same data too, however I hardly ever boot into windows. I didn’t get much conflicts (it’s definitely inefficient though), but bear in mind I might just not have gotten them because of little use on windows. Since I started needing to boot into windows more, I reactivated my old laptop to use with windows, because I am too lazy to reboot. I finally need to get around trying to boot the windows partition in linux through kvm xD
Single db actually sounds very interesting, I just never considered that out of an abundance of caution (and mistrust for anything windows). Is there any concrete reason to believe ntfs-3g and ntfs on windows would see different timestamps?
And ntfs-3g works very well for me, I don’t see any reason to use exfat for me. E.g. it has no journaling or similar to help recover from crashes, and maybe other shortcomings stemming from it’s main purpose (sd cards/flash/…). Am I missing something on those and/or are there other benefits besides being in kernel? @bt90
If you want to do this, then I would suggest storing both the binaries, config, and database all in a folder on that partition, and then running everything from there. This way you will have a self-contained portable installation. I would also disable automatic upgrades, because you do not want to have different versions of Syncthing messing around with the same database and config.
For example, if your NTFS partition is D:\ in Windows, then place syncthing.exe in a folder called D:\Syncthing, and then run it using syncthing.exe -home=home from inside that folder. Then, you can do the same using the Linux binary, e.g. syncthing -home=home, etc. Also, always make sure that both the Windows and Linux binaries are the exact same versions.
Ideally, you should also use relative paths for all your Syncthing folders too, so that they can persist across the different operating systems. Syncthing accepts forward slash / path separators in Windows too, so I would suggest using these everywhere.
I’m having a similar setup and I’m using one distinct Syncthing instance per OS (with different DBs). It works just fine. I haven’t had any problems with conflicts but before rebooting I always take care to rescan/sync.
Note that you will not have much fun with NTFS (via NTFS-3G) on GNU/Linux when dealing with lots of small files because the FUSE overhead becomes very notable which also affects Syncthing’s scanning performance. So only use this for small directories which you really must share between the operating systems. exFAT was mentioned as an alternative but keep in mind that it isn’t journaled.