With 0.14.47, there’s a new feature that enables FS change watcher at syncthing. This is great. So now as soon as a change happens, it gets propagated. Definitely a huge improvement over waiting for an expensive full scan.
Can I have a suggestion for advanced users: can we have a middle ground option between full scans and filesystem changes? That is: all FS changes are still sent as changes to the share, but the changes are sent at a different user-configurable interval, a “batch change interval”. Before then, changes are queued.
For rapidly changing directories, propagating share changes with each change can make the network and disk noisy for other nodes. Frontends such as syncthing-gtk as well get noisy on the notification side. Obviously with a small number of nodes / changes this is not an issue. Imagine, however, saving / regenerating a 1GB video a few times on a 3-node share. You can easily be trying to force 10+GB into the network in a span of 1 minute. It would be helpful, though, if syncthing batched the FS-detected changes, say, in 5 minute intervals. Come the batch send time, it could then send all the changes, skipping over effectively superfluous ones (e.g. if you change the same file 5 times in the batch interval, only the last version effectively gets sent, dramatically cutting down bandwidth / disk usage).
The way the FS watcher works right now is effectively the same as what I descibed above, except with the “batch change interval” set to 1 second (or whatever the granularity of the FS watcher is), i.e. all changes are sent effectively immediately. But it would be nice to have a switch to control the interval to say, every 5 minutes or so.
This is different from a simple rescan in that it doesn’t force a re-read of the share again: the changes sent will simply be the ones previously detected by the FS watcher. For larger / less performant shares the FS watcher is a huge bonus over a rescan. You can still set a rescan interval to maybe every hour (depending on the share). Obviously there’s not much sense in having a “batch change interval” larger than the “rescan interval” since a rescan is a more comprehensive form of checking for FS changes.
Anyways, loving the new syncthing. What I’m asking for actually sounds like a hard problem (not sure, but you have to have a change queue and a way of calculating which changes in the queue are superfluous) so I understand if it’s a long shot.