Open-Source Peer-To-Peer File Synchronization Tool Syncthing 1.2.0 Released

Syncthing 1.2.0 webui

Syncthing, an open source continuous file synchronization tool, had a new release yesterday. The new Syncthing 1.2.0 adds QUIC with NAT traversal as a new transport protocol, fixes some bugs, and enables automatic error reporting.

Syncthing is a free, open-source peer-to-peer file synchronization application written in Go, which implements its own open Block Exchange Protocol. The application, which is available for Windows, Mac, Linux, Android, Solaris, Darwin and BSD, can sync files between devices on a local network, or between remote devices over the Internet.

The app is both private and secure. None of your data is ever store anywhere else other than your own computers (no central server); all communication is secured using TSL and authenticated using a strong cryptographic certificate. Basically, it can replace Dropbox and other similar services with something decentralized, where your data is your data alone.

Syncthing 1.2.0 adds QUIC (Quick UDP Internet Connections) with NAT traversal as a new transport protocol. QUIC is Google's rewrite of the CP protocol that combines HTTP/2, TCP, UDP, and TLS, and it should have benefits in terms of speed, transport protocol redundancy, latency and possibly security. However, TCP remains the preferred way of connection for Syncthing, when possible.

The new Syncthing 1.2.0 also adds automatic crash reporting by default. This sends reports of crashes to the Syncthing developers, containing "a technical trace of what the various threads / routines in Syncthing were doing at the time of the crash". The Syncthing documentation continues by saying that the crash report does not include any log data, file names, device IDs, statistics, unique identifiers, or any other personally identifiable information.

Syncthing disable automatic crash reporting

The new automatic crash reporting can be disabled from the Syncthing settings, in the Advanced configuration dialog.

Another change in this release is the deprecation of small / fixed blocks, making large / variable block size the only available mode of operation. Using large blocks results in a smaller block list, lowering overhead.

Other changes in Syncthing 1.2.0:

  • This release reverts the version naming change in v1.1.4. Versions are now named with the time of their archiving, and the file modification time is unchanged when archiving. An exception to this is the "Trashcan" versioner which does not modify the name - instead it does set the file modification time the time of archiving.
  • Fixed panic: bug: ClusterConfig called on closed or nonexistent connection
  • Fixed filesystem watching failed when parent folder is not listable
  • Fixed connection error after closing failed items list and opening another list
  • Fixed version cleanup looks at the wrong time
  • Fixed support bundle doesn't include errors list, instead printing an error
  • Fixed scan failure blocks "Rescan" button
  • Fixed spurious need to "revert" nonexistent changes with Receive Only folder on Android
  • Fixed panic when folder disappears while scanning
  • Fixed shutdown takes too long, triggering fmut deadlock panic
  • Fixed puller complains about invalid filenames which are long gone

It's worth noting that Syncthing 1.2.0 is not compatible with Syncthing 0.14.45 and older.

You might also be interested in these great open source alternatives to proprietary solutions:

Download Syncthing

On Linux you can install the Syncthing binary by downloading extracting the archive for your OS architecture, then running this install command in the extracted Syncthing folder (e.g. ~/Downloads/syncthing-linux-amd64-v1.2.0):

sudo install syncthing /usr/local/bin/

For Debian, Ubuntu, and Debian or Ubuntu based Linux distributions like Pop!_OS, Linux Mint, etc., there's a Syncthing repository for installing and receiving updates.

A Syncthing snap package is also available on the Snap Store. Once you setup snapd on your Linux distribution (it's enabled by default on Ubuntu), you can install Syncthing using this command:

sudo snap install syncthing

Syncthing has console and Web UI interfaces by default. There are also third-party GUIs and integrations you can use, like a Windows tray utility, macOS application bundle, a GTK GUI wrapper for Linux and Windows, or an Android app. These are all listed on the application homepage. These utilities can automatically download, install (and later update) Syncthing for you.