So to explain a bit more about the “master, slave, client” setup I made.
- Master: send-only: is the main server that continuously checks for new files on the internet, and makes sure it has the latest ones in its share folder.
It’s also on a different subnet than clients, and uses a different internet connection. This is automated and the “only true source of data” to me.
- Slave: send&receive : Is on both subnets, the one where the ‘Master’ is in, and the clients. They handle their own set of clients, but all have same files, based on the shared folder. These servers are further untouched, no manual interactions nothing, except to monitor sync status with clients.
- Clients: send&receive :‘clients’ subnet only, receive files.
Obviously there is no such thing within Syncthing, but I divided the roles for: bandwidth limitation, and because there are some pretty much clients I decided to make 2 “slave” servers, that handle their own set of clients as they are divided over multiple buildings, lets say building a/b and building c/d.
But it is possible that on rare occasions that the client did download a different file from the internet as the Master simply did not detect it or it’s a special device type. So yes, I want the clients to sync with eachother and there for also the ‘slave’ servers. Except for the ‘Master’ just to be sure I still have the files ready for sync if some “not so smart” human decided to delete files from the folder.
I’m syncing mobile device firmwares, the clients are restoring devices.
Some devices do Android phones, some do Tablets, some do both.
Same counts for iPhone and/or iPads.
And a few clients will do any device and type.
The ‘smash-tool’ software uses a caching folder. When it does not have the firmware files for the detected device it will download from the internet.
Now there are more “not so smart” people around and they just do whatever device type they want… and I want to find out which client does that because it’s giving other clients additional useless storage consumption. However the clients are marked with labels saying which vendor and device type are being restored there.
If I somehow can ‘catch’ the ones that are restoring other devices than ‘designed’ for. I can inform the team lead about it so they can explain them what the labels are for 
Clients are on send&receive because I noticed with receive only, they will go out-of-sync in above situation, and then I’ll have to override the changes on the client-side every time and I’ll have more to monitor. And the clients will not synchronise with eachother if one has this occasion where the master didn’t had the firmware file.
Slaves are set on send&receive as well, for the same reason as clients, and will also update the other clients on other a/b <> c/d
Master is on send only, just to make sure the clients will not delete files from the master, and I can decide for myself if I override all changes, or temporary set it to send&receive so the master also has those files.
Also I trigger an override via the API when the master detected new firmware files and started downloading them.
This setup is done because there is no such thing as ‘master’/‘slave’/‘client’ on SyncThing and needed a way around and yet keep it manageable.
Yesterday by coincidence I found one client who was syncing and looking into it, it was indeed doing iPads instead of android tablets. I called the supervisor and asked and he confirmed they shifted that machine for more workload. Therefore I changed the shared folder and it’s good again.
So I’m looking for a good simple way to find out Who(what client) caused the additional sync in case they are syncing the wrong files for the designated shared folder.