I’m encountering a setup issue and would greatly appreciate your help.
We’re using Syncthing to replicate files between two virtual machines (VM1 and VM2), each running an ERP system. The goal is simple: keep both systems up to date by exchanging data changes.
Here’s how our architecture works:
Each VM has:
A SEND folder (to export its data changes)
A RECEIVE folder (to import changes from the other VM)
Data flow:
Users modify data in the ERP.
A custom data replicator runs periodically on each VM:
It exports changes as .BBN files into the SEND folder.
It imports.BBN files from the RECEIVE folder.
After processing a file in the RECEIVE folder, it renames it to .001 as an acknowledgment.
Syncthing is configured to sync:
VM1:SEND ➜ VM2:RECEIVE
VM2:SEND ➜ VM1:RECEIVE
The problem:
Syncthing gets confused because:
It sees .BBN files on the SEND side.
But after processing, the RECEIVE side no longer has .BBN, only .001 (0 bytes, used for tracking).
This results in accumulating out-of-sync items, since Syncthing tries to re-send the .BBN files (thinking they were deleted/modified), which is not what we want.
Syncthing notifies “elements modified locally” with a number of files that goes up a little more each time our custom replicator runs.
My goal:
We want one-way sync, where Syncthing:
Sends files from SEND to RECEIVE
Ignores any changes or deletions happening in the RECEIVE folder (after successful transfer)
What I’ve tried:
Using ignore patterns (.001) → breaks replication entirely
Searching for a “send-only but don’t care about the destination” mode → couldn’t find one that works for this use case
Is there a recommended approach to handle this kind of setup with Syncthing?
Any guidance or suggestions would be highly appreciated. I can provide setup screenshots or more technical details if needed.
I don’t think there is a mode that fits your use case cleanly. What you are doing isn’t really sync per se, it’s shipping files once, processing them, then removing them.
(Though if you change your workflow to just have bidirectional sync in either direction you might be fine.
BBN files goes A to B, gets processed
B removes the BBN file and creates a 001 file
This syncs to A who sees the disappearance of the BBN file and the appearance of the 001 file and is happy
A removes the 001 file and both folders are clean and ready for the next iteration.
)
The problem is that after a while, when you have too many local additions, it shows as “desynchronized”.
We wish to use Syncthing to monitor that the files are transferred correctly. Unfortunately, this means we can’t because the synchronization status is bound to be failed after a while.
Alright let me try to make sure I understood your original message.
So right now, I’m in SEND ONLY / RECEIVE ONLY mode and it doesn’t work.
You’re suggesting to switch to SEND AND RECEIVE mode. So if I do so:
BBN files are created in folder A
Syncthing detects the new BBN files and copies them to folder B
Replicator modifies BBN files and changes extension to 001
Syncthing detects the BBN file has disappeared and that a new 001 file has appeared in B.
Syncthing deletes BBN file from A and creates 001 file to A.
Am I correct?
So basically you are saying in the SEND & RECEIVE mode, Syncthing takes the file modification that is the most recent and applies it to the other side, right?
Other question: is there an impact with the pull order?
It’s set as “random” currently.