Best architecture for mirrored offsite sync of multiple local folders

Before I finish setting this up I thought I’d see if there was a best practice established for a scenario like this.

I have multiple machines at Site A syncing to an Unraid box using separate Syncthing folders. Total content is ~600K files/~4TB. So assuming User 1 has three PCs with different filesets, each being backed up to /media/Storage.User1/Desktop1Files; /media/Storage.User1/Desktop2Files; /media/Storage.User1/Laptop3Files on the server. Each are using separate sync folders as there is no intention to sync between the devices themselves.

Now I want to have the contents of all the synced folders in /media/Storage.User1 on Server1 mirrored to another offsite Server2 on Site B. The same thing on Site B will be happening in the other direction.

Is it preferable to a) re-use the existing separate folders so that Desktop1Files is a send-only folder on Desktop1, a Send/Receive Folder as the hub on Server1 and a Receive-Only folder on Server2; or b) set up a separate folder sync between Server1 and Server2 to handle the mirroring of the parent /media/Storage.User1/ folder to Site B; c) point-to-point sync each of the source folders to both backup locations; or d) something else entirely (ignore patterns?)

I like the simplicity of option b) but am concerned that the overhead of maintaining and scanning over the same large dataset with multiple sync folders might unnecessary and choke the I/O on the server. I don’t like c) as I feel like it runs a high risk of saturating the network and losing control of the replication, which can be much less than real-time on the server-to-server sync.

Hi @nethead25 !

Just remember that a synched copy IN ITSELF is not a backup. Ransomware, accidental deletion and other accidents are immediately synched, rendering the synched copies equally worthless.

No need to have multiple folders in Syncthing for sync with different computers, unless you have different settings depending on computer you share with. It is much more convenient to have ONE share for all devices. And since the number of devices in this case is relatively small (three plus one), I would Sync all-to-all to increase availability.

I’d go for this.

Good luck!

I have a setup with similar requirements and I went for option b) as well. The main server has a separate send-only folder configured one level above what is synced with the clients. The mirror server only gets this separate share and the clients don’t even know about the mirror server. This is especially useful if new shared folders are added between clients and the main server, they will automatically get included in the mirror.

And definitely, that is NOT a backup strategy. But it does add some level of protection against sudden loss of the main server, such as complete disk failure, lost connectivity, or loss of hardware (theft, fire, etc.). Recovering from that involves pointing the clients to the mirror server however, or quickly spinning up the main server again with the data from the mirror. If you want better fail-safe behavior, option c) is easier.

Option a) IIUC does not have direct links from the clients to the mirror server? Then of course in case of failure, it’s also harder to keep synchronizing. So it doesn’t really give an advantage over b). Note that making the folders send & receive on the main server is only required if changes happen on that server. Relaying changes from the client to the other server happens even if it’s configured as receive only.

Thank you both for the input! And yes, I am aware that Syncthing is not a backup solution, I will be using Borg to do incremental backups on the consolidated data. I will say, I wish there were a peer-to-peer backup solution as easy to configure as Syncthing, as it’s really so much more pleasant to work with!

I think I will try using the folder to sync the parent directory between servers for now, and see how it goes. Thanks for the insight.

1 Like