First 90 days with Syncthing

Hi, this is a report of my first experiences with Syncthing after 90 days. Please see this post as a mixture of appreciation, feedback, feature request and help seeking.

My background

I am a computer scientist and participate in some open-source projects. So I think, my experience might not be fully representative. I also used BTSync before, so my expectations might be biased towards it.

My scenario

I have a bunch of computers, some at home, some remote and some mobile and I want to synchronize some files between them. The devices I have are the following:

  • A desktop computer at home
  • A file server at home
  • A private laptop which is mostly located at home
  • A work computer (at work of course)
  • A work laptop which is partly at home and partly at work
  • A mobile phone and a tablet
  • A webserver somewhere on the Internet

All of my computers are running Linux but sometimes I have to run Windows at work or for playing games. So my focus is easy usage on Linux and support for Windows.

This is what I want to achieve:

  • I got some data that I want to keep synchronized among all my computers like some settings for software, etc.
  • I want to keep my software projects synchronized between the computers I use to work on.
  • I want to keep my media files accessible from all my devices (more like fetching selected files/folders on demand than keeping them synchronized)
  • Sometimes I want to copy huge data sets between home and work and I want this transfer to restart when devices go offline/online.
  • I want to be able to share some folders with other people without uploading them somewhere.
  • Of course, I want to stay in control of my data and the data should be secure.
  • File transfers should be fault tolerant and detect whether devices are offline and whether they are local or remote.

My experience with Syncthing

Installing syncthing was easy thanks to the Ubuntu PPA. However I felt a little uneasy installing software from an unknown location that is not even endorsed by the software developers. But installing software outside of my packet management so that I have to care about updates myself seemed even worse.

After installing Syncthing, I opened the web interface like I was used to from BTSync. However I remember that when I started with BTSync it felt awkward to me to use the browser on localhost to control a local software instead of using a proper GUI. I can see how this makes cross-platform development easier but it still feels wrong to me.

The web interface looks nice. However I found it a little non-intuitive since it puts much more emphasis on devices than BTSync did. You first have to add a device to all other devices and define the folders shared with them. Then you have to actually add the folders you want to share. I think this is way to complicated for the average use case.

I think the idea of accepting devices is interesting but it needs to be simplified. When I add/accept a device, I should be asked if I want to accept (transitively) all devices that this device accepts (which should be the default) and which folders I want to share with this device (which should default to all, including folders added in the future).

When synchronizing folders, instead of entering a unique name (where a single typo will make a separate folder instead of a synchronized one), all folders that are shared by other devices should be displayed so the user can select from them.

It should also be possible to request a directory tree of the shared folders and select a subfolder/file for synchronization. I ran into this issue when I tried to keep only the project I was currently working on on my laptop but not all the others. I had to unshare my projects folder and re-share all projects in it as individual folders to accomplish that. This was a major pain in the *** as I had like 50 projects and I had to do that on all of my devices.

For copying files I really like that Syncthing will not crash if one device goes offline for two days and comes up with a different IP address afterwards. No matter what, the data will eventually be copied, this is like rsync on steroids. This might be out of scope for Syncthing but I think a small change could make this even better: It would be great if I could select to fetch a folder (in read-only mode) once and forget it when it is synchronized. A notification that says that it is finished would also be great.

Also I think Syncthing is missing a taskbar icon that shows me the information I want: Is Syncthing still alive? Is everything synced? Is there a problem? I don’t want to periodically check the web-ui to get this information. The web-ui is ok for managing devices and sharing folders and getting the details but a small icon that is always visible and that tells me the status would be great.

Besides all my criticism I really appreciate what Syncthing has accomplished so far. It also was pretty stable and reliable for such a new software. From time to time Ubuntu notified me that “a program has crashed” which was Syncthing but whenever I checked it was still running. So I think it either has crashing child processes and incredible self-healing powers or the Ubuntu package runs the daemon in a restart loop.

3 Likes

Thanks for sharing your story, I enjoyed reading it. :smile:

Syncthing can now auto-update itself. You can download the Syncthing binary directly from the releases page, and drop into ~/bin Right-click it and allow to be executable, then launch it and voila! It will open by default in your web browser, and from there you can set it to auto-update.

You can set a device to be an Introducer. You have to do this on every device connected to this main device. Once set as an Introducer, any new devices configured on the Introducer will be auto-configured on all the other devices.

Syncthing doesn’t currently support auto-accepting of shared folders.

When you setup an Introducer, first add all the folders… fully setup the Introducer. Then add devices to the Introducer, and when adding a new device, select which folders you want to share with that device. So it’s sort of what you want, but in reverse.

On your laptop, you can selectively sync a single sub-folder of a shared folder in Edit > Ignore Patterns (example from this post)

// Don't ignore the following dirs (i.e. DO sync them):
!/DCIM
!/TitaniumBackup

// Ignore all the rest
*

Take a look at SyncTrayzor for Windows, and Syncthing-GTK for Window and Linux. These apps can also download Syncthing to keep it updated for you. Also, they have notifications if you want them.

1 Like

I have something in progress to eventually fix this.

3 Likes