If you use more than one computer, be it multiple desktop PCs, mobile devices, laptops, or remote servers, you are probably using some form of synchronization to transfer data between devices.
As far as options go, there are quite a few that you can make use of for that. From built-in synchronization features of programs such as Firefox or Chrome to folder-based sync clients like Dropbox, Google Drive or OneDrive.
All have in common that you rely on third-parties to store your data on the Internet. Depending on the service, you may overcome privacy issues by using encryption, but it is not always an option. There is for instance no option to encrypt your browsing data before it gets synchronized to the cloud and from there to your other devices.
If you want to be on the safe side of things, you can also move files manually only. But that requires quite some shuffling around of data on a regular basis.
A fourth option are clients that do not store in the cloud, but synchronize only. Bittorrent Sync is probably the most popular client in this regard, but there are others.
While I enjoyed using Bittorrent Sync, it is closed source after all which is a critical issue to some.
Syncthing is a relatively new open source alternative to that. The application, available for Windows, Linux and Mac systems is in its early stage of development which you will notice when you start using it.
Syncthing uses encryption (using TLS and perfect forward secrecy) for all communication. Each node is identified by certificates, and only nodes permitted to connect can connect to the cluster of nodes.
If you are interested in detailed information, visit the protocol readme on the project website.
Below is a set up guide for Syncthing (v.0.8.5) that provides you with information on how to set it up on Windows systems.
Setting it up
- Download the latest version of the synchronization software from the official project website.
- For Windows, a 32-bit and 64-bit version are provided.
- Extract the contents of the version to your local system after download, it has a size of less than three Megabytes.
- Run syncthing.exe afterwards.
- A command window opens up which creates several directories and files on your system.
- In the end, the admin panel is opened in the default browser. You can access it here at any time: http://localhost:8080/
The default synchronization directory is c:\users\username\Sync, the user configuration directory C:\Users\username\AppData\Roaming\Syncthing
Configuring the service
You can configure the service using the web admin console. The three key options that you have here are the following:
- Add repositories (directories) to the client.
- Add nodes (other devices) to the sync process.
- Configure settings.
A click on Add Repositories starts the process. You have four options on the page of which two are mandatory. You need to pick a unique ID for the repository, e.g. pictures or documents, and select the repository path (folder path).
Here you can also pick the nodes that you want to share the repository with, and make it a master repository. If you do, changes made to the repository on the computer will be synced to all other nodes, but changes made on other devices won't be synced back.
You need to add at least one node as it does not really make sense to use a synchronization client if you do not have devices to sync the data with.
A click on add node starts the process.
This process requires you to have the node ID of the other system at hand, as you need to add it to the configuration. Besides that, you can also add an identifier for that node, and decide whether you want IP addresses to be dynamic, which means auto-discovery, or static by adding addresses in the form ip:port to the addresses listing.
The settings provide you with quite a few preferences. Here you can change sync protocol listen addresses, limit the outgoing rate, disable UPnP, add an authorized user account to the web admin interface, and change GUI listen addresses as well.
If you do not want your data to be hosted by a third-party in the cloud, and don't like Bittorrent Sync because it is closed source, then Syncthing may be an alternative.
You can set it up on desktop machines or web servers on the Internet if you want to use a server that makes the data available 24/7.
It supports block-level synchronization, which means that if you sync encrypted TrueCrypt containers, only the modified bits and not the full container will be synchronized by the service.