Ubuntu / Linux news and application reviews.

Syncthing is a cross-platform peer-to-peer file synchronization client/server application written in Go. Similar to BitTorrent Sync, the tool can be used to synchronize files between computers however, unlike BitTorrent Sync, Syncthing is open source:

"Syncthing replaces Dropbox and BitTorrent Sync with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet".

"Using Syncthing, that control is returned to you".

Syncthing
Syncthing Web GUI

And it's not just Syncthing that's open source. The P2P protocol used by Syncthing, called "Block Exchange Protocol", is open too. Read more about BEP HERE.

Unlike cloud sync tools such as Dropbox, Syncthing transfers the files directly between nodes (other computers on which you've installed Syncthing) which has several advantages: the files don't end up on some cloud server, the transfer speed doesn't depend on third-party servers and also, there are no space restrictions (except, obviously, the HDD space available for those nodes).

Main Syncthing features:
  • synchronize as many folders as you need with different people
  • responsive web GUI;
  • cross-platform: Syncthing works on Linux, Mac OS X, Windows, FreeBSD and Solaris. There's also an unofficial Android port;
  • Syncthing doesn't require advanced configuration and it should work out of the box, both over LAN and over the Internet;
  • secure & private:
    • the data is only stored on your computers, without using a central server;
    • all communication is secured using TLS;
    • every node is identified by a strong cryptographic certificate and only nodes you have explicitly allowed can connect to your cluster;
  • open source app, open protocol.

It's also important to mention that with Syncthing, you can select which nodes you want to share a repository with. So for instance, you can create multiple repositories and enable/disable sharing with some existing nodes on the fly:

Syncthing

Also, Syncthing comes with an option called master repository which, if enabled, protects the files from changes made on other nodes, but the changes made on the current node will be sent to the rest of the cluster.

Note that Syncthing is under constant development and new / improved features are added frequently. For instance, the current release includes a simple file versioning feature but in the future a more advanced file versioning should be added.

Here are a few more Syncthing (web GUI) screenshots:

Syncthing

Syncthing

Syncthing

I've been following the Syncthing development for quite some time (thanks to Alan Pope's tip), but the tool didn't work for me until now - apparently the local discovery was too fragile until recently -, and I don't like writing about stuff that doesn't work in my tests. That's why I didn't post about it until today.


Download Syncthing


Download Syncthing:
  • Download Syncthing - binaries available for Linux (32bit, 64bit, ARMv5, ARMv6 - so it works on Raspberry Pi, ARMv7), Mac and Windows as well as source code
  • Syncthing is also (unofficial port) available for Android
  • Arch Linux: install Syncthing from the community repository or the latest Git via: latest release | AUR

To run Syncthing on a Linux machine, simply download the archive, extract it and double click the "syncthing" executable from the extracted folder (or run it with "./syncthing" from the extracted folder). Once launched, a new tab should open in your default web browser with the Syncthing web GUI.

To use Syncthing with Syncthing GTK, make sure the "syncthing" binary is in your $PATH. You can do this by simply copying the syncthing binary to /usr/local/bin/ .e.g, by using the following command (assuming you've extracted syncthing in your home folder):
sudo install ~/syncthing*/syncthing /usr/local/bin/

You'll want to add some nodes - for how to do that, see the Syncthing getting started guide. You may also want to check out its documentation.

Report any issues you find @ GitHub.