Thursday, October 22, 2015

Syncthing 0.11.0 Released With Performance Improvements, Proper Conflict Detection

Syncthing is a cross-platform peer-to-peer file synchronization client/server application written in Go. The tool is similar to BitTorrent Sync (but it's open source as opposed to BT Sync), and it's used to synchronize files between computers. More about Syncthing, HERE.

Syncthing WebUI

Syncthing 0.11.0 was released today and it includes significant performance improvements as well as various other changes such as:
  • versioning now uses version vectors instead of plain integers which means Syncthing has proper conflict detection now (in case of a conflict, the file is renamed from file.ext to file.sync-conflict-YYYMMDD-HHMMSS.ext);
  • the GUI has been changed from polling for updates to listening for periodic status updates from the server side, which should reduce the CPU usage;
  • the garbage collection threshold has been changed from 25% to 100% (the Go default) which reduces CPU usage and increases sync speed for large files (but uses more RAM - to decrease RAM usage, but with a performance hit, you can run Syncthing like this: "GOGC=25 syncthing");
  • The database commit process has changed slightly to better accommodate handling lots of small files and the result of this is a faster sync with lower CPU usage;
  • scanning of many large files is now more efficient;
  • user interface improvements, language can be selected from the Web UI, process uptime is now visible in the Web UI, etc.;

The complete Syncthing 0.11.0 release notes can be found HERE.

Important: the latest Syncthing 0.11 is not compatible with older 0.10.x versions. Also, if you're running an older Syncthing version, it won't update to the latest 0.11 version automatically - to update to v0.11, you'll either have to press the update button in the Web UI or run "syncthing -upgrade" from the command line.

When upgrading to Syncthing 0.11.0, the app will rehash all the files the first time it starts. That's because the database format has changed with the latest release. The old database will be removed two weeks after it was last written so if for whatever reason you want to downgrade, you'll have two weeks to do so.

To support these changes, Syncthing GTK 0.7 was released (and is already available in our PPA) today and besides Syncthing v0.11 support, this release brings the ability to download recent daemon version if the current version is no longer supported, as well as reduced CPU usage thanks to the new Syncthing API.

Syncthing GTK

For those not familiar with Syncthing GTK, this is an unofficial GTK3 & Python GUI for Syncthing which adds extra features like an Ubuntu AppIndicator / tray icon for Syncthing, running the Syncthing daemon in the background, filesystem watching and instant sync using inotify, file manager integration (Nautilus, Nemo and Caja are supported for now), speed throttling, can automatically install and update Syncthing and more.


Download Syncthing


Download Syncthing (binaries for Linux, Windows, Mac OS X FreeBSD, Solaris etc. and source files available)

You can also find packages for various Linux distributions HERE.

Alternatively, you can use Syncthing GTK to install and keep Syncthing up to date.

No comments:

Post a Comment