After two years of using Syncthing (having come from Bittorrent Sync), I’m moving my mesh back to Resilio. If you don’t care, that’s fine I just wanted to at least tell you why.
First of all, Syncthing does what it’s supposed to do. It syncs files. I haven’t had a single case of file loss or corruption caused by Syncthing. I also love the community and the interaction with developers.
Syncthing is cumbersome to use both on Windows and Android. There is no native GUI, there is no option to run it as a background service, you have to use the browser interface or rely on a 3rd party interface to communicate with the core service.
There is no native equivalent to BTSync’s FileSystemWatcher. Syncthing-notify is yet another separate component you have to manually install and run as a service.
Device and sync status (using both the browser and the GTK GUI) often are inaccurate. I have had devices shown as connected for hours after I turned them off, and other devices sitting at 75% sync even if all files were identical.
Syncthing uses A LOT of CPU power, both on my (admittedly underpowered) home server and my phones. I have regulary had my phone run down the battery from 50% to 0% in two hours. BTSync/ResSync behaves much better.
Devices will drop their connection for no discernable reason until I restart Syncthing. This is on a LAN with two devices standing next to each other. I don’t know if this is a GUI problem or not, but I don’t want to worry about that. I need a solid, fire-and-forget solution.
Thank you for the feedback, it’s both rare and valuable to hear from the people who have given up on us. I think most of your points are valid criticism and things we should work to improve. Nonetheless I’m going to respond to a couple of them, just for the record, hope you don’t mind.
Breaking changes were a pain point, one we attempted to fix with 0.14. So far it’s been successful in that we haven’t needed to make a breaking release since (with a minor caveat around symlink in the latest release or two). If you’ve been on the train for a while there have certainly been a few upgrades along the way.
Having a device that ignores deletes is possible today, there is an ignoreDeletes advanced option for folders. (But the issue you link to is for some sort of passive backup device which is something else.)
Your connection issues are new to me.
The other points, especially those around UI and experience, are well received.
I use Bittorrent Sync (btsync) / Resilio Sync (rslsync) now for a couple of years and look for a new solution, since Resilio removed the “nested folder” feature.
I end up at Syncthing to find out, that they have issues with hierarchical folder and access/share organization too.
Every time I share with Syncthing a new folder within another Syncthing folder (from a file system perspective) I get a kind of one time error or warning like “unexpected folder” (or something similar). And after an while I found a lot of dead files in the internal Syncthing folder.
Can you explain that with a little more detail please. I use folders within folders and it works fine (you just shouldn’t shoot yourself in the foot with cyclical includes, but I assume that’s not your problem).
Questions I have:
Where do you get this error? If in logs: Please give us logs. If it is in the folder edit dialog: Well, that’s just a warning, because nesting folders can create problems the user should be aware of.
“Or something similar” - that makes it impossible for us to do something about it, please give us the actual error.
You find dead files where exactly? In the “.stfolder” directory in your folder root? There should be nothing there from our side. What kind of files are this (ls -la)? What makes them dead?
I concur. The nice thing though is that Syncthing is open source. So we can work together to make it better. As a user who does not code, you have good chances that your problems still get solved - the chances that they will be solved (timely) are proportional to the amount and clarity of information you give about your problem.
I’m pretty sure by “folders within folders” he meant nested shares. As in you have a master folder, which is synced, and then within that master folder you have other folders which are “defined” as separate syncs. That way he can have all data in one place but share different folders with different machines, instead of having copies of said data, which kind of makes sense.
That’s exactly what I meant with “folders within folders” as well. I generally use “folder” for shared Syncthing folders and “dir” or “directory” for the filesystem structure - that’s probably not obvious, so I should mention that explicitly.
With Resilio Sync (before they removed the Nested Folder feature) a had a underlying Directory structure, which simply reflected a kind a simple file/directory access scheme. According to the Directory structure I created the Folder structure across all different servers.
The different user had access to different Folders according to the project or maintainer role. This setup worked well over years. But as said, the “nested folders” is gone.
So my question here: Is it possible to build a Syncthing-based setup to create the same functionality? I am not sure, but maybe you have an idea.
BTW in this example I’ll continue with the Resilio Sync Encrypted Share Folder named ‘datapool’, which is a really cool feature for external storage. The downside is the missing access control feature of encrypted folders. But thats a Resilio issue.
I have never used resilio and do not understand the purpose of the underlying structure in terms of synchronization. And Syncthing has no explicit access control mechanisms or enforded directory structure. However as far as I understand your setup still works fine with Syncthing, except for the encrypted shared folder, that is In The Making ™:
Create separate shared folders for every directory that any device needs access (workgroupA, subfuncitonA, projectB, …). Then share those folders with the appropriate devices. The devices will manually take care of the “external” directory structure, which can be very useful, e.g. if one device only share a single folder deep down in the tree, it would be nicer to sync it to an easier accessible location. If you want to enforce a specific setup, you need to deploy the configuration. There are discussions and community contributions about doing this with e.g. ansible.
a (maybe useless) bump on this topic adding my 2 cents.
I have had syncthing running for a while now on my android phone and three embedded SBCs over different geographical areas. While it works exactly as advertised I think I will fully switch to resilio. My main reasons are as follows:
resilio is faster in scanning and transferring files using less resources which is quite important or under-powered raspberry pi 1-like devices
syncthing (still) doesn’t support (and doesn’t look like it ever will support) encrypted nodes allowing me to store data on nodes without worrying about other people having access to the files / and vice- versa.
there is no IOS client, so I am unable to backup/sync pictures from y wife’s phone
Love syncthing, but 2. is a feature that is essential.
I’m currently evaluating… many alternatives… to NextCloud, whose iOS app is total garbage; offline files only work when the sun spots are correctly aligned and the development team didn’t each drink two bottles of vodka before the release, which is maybe once a year. (The rest of NextCloud, while overblown for simple file syncing, works. The iOS app doesn’t, ever.)
Resilio Sync actually works sweet on iOS (given the platform’s idiotic restrictions on background processes). I’d much rather use syncthing, if it
a) actually had an iOS app (essential), and
b) supported encrypted 3rd party nodes (highly-desired but not essential for the switch).