Bittorrent Sync - An Overview

So I’ve been using Bittorrent Sync for a while now and thought I’d write some thoughts on it.

A brief description of it would be that it’s the sync elements of Dropbox, but running on your own server. It doesn’t have the web interface (but that can be added with third party applications, such as Owncloud) but does one thing, and one thing well.

Basics

BTSync is advertised as server-less Dropbox. This means that you don’t have to upload your files to a third party server to sync them between devices. This unfortunately means that both devices need to be on for BTSync to “see” them and sync the files. This maybe fine for your uses (for example, syncing folders between a desktop and a web server to have your web server update as soon as you change a file locally) but might mean that it’s not the sync solution for you.

It uses the same network solution as torrents to send data between the different clients that are syncing the files and therefore does not rely on a central server. The only data that can be sent to a third party server is a lookup as it can use trackers (the same as other torrents) to find its intended destination (however, this can be disabled on a per share basis). Each share is protected by a secret key that allows each share to share the files - without this key, it’s not possible to share, it’s safe from prying eyes (though it would be interesting how the traffic shows up in Wireshark or similar).

Unlike Dropbox, files don’t have to be moved into a central location and can be shared from where they are. This might mean however, that you need to have many different shares rather than one but it does allow more flexibility. For example, I used to sync my Windows and Mac installs to Dropbox. Before Dropbox introduced selective sync, I had to sync all my Windows save games to my Mac, even though having them on there was pointless. Likewise, my Windows install was solely for playing games, so I didn’t need any of my other documents on it. Now I can select sync both and not have to worry about one appearing on the other install.

So how does it all work? I’ll discuss below.

Syncing

Sharing files is the heart of Bittorrent and the sole purpose of BTSync. Syncing is quick (though depends on your network speed and whether you’re syncing across the internet) and easy and large files are resumed from where they left off, just like actual Bittorrent. Syncing across the web works perfectly as well - I share files with a VPS server running Subsonic to sync my music on my Mac with the server. It’s a nicer, simpler solution than using Google Music as Subsonic works on all my devices and is a bit more feature filled (Last.fm syncing for a start).

However, it’s a bit more convoluted to setup than Dropbox. As mentioned above, files don’t have to be in a central folder, so you have to select each and every folder. Adding a folder in the Mac version gives the following window.

BTSync Sync Setup

The shared secret is the key to let you sync your data to your own devices.

To add the sync folder to the other device, you open the same window and paste in the same key and choose what folder it is you want to sync.

You can view all the synced folders within the program.

Synced folders status

As you can see, I’m syncing many different folders within my Home folder than the actual home folder itself. This gives me a bit more flexibility. However, you can set a folder to sync and then set files and folders to ignore - this involves editing a text file, a bit more involved perhaps than the Dropbox method, but an effective one.

Comparison of Dropbox and BTSync Selective Sync Options

Drawbacks And Remote Access

As stated in my introduction, the main drawback is that BTSync requires that both devices are on to sync. This was to prove to be an issue for me, as my devices weren’t always on. I also wanted to replace Dropbox as my main source of syncing as I’m not 100% trusting of the major cloud services anymore (though I still use Spideroak to backup my data as I DO trust them) but was annoyed that I’d be missing out on one of the features I did like about Dropbox, the remote access to files from a browser.

I managed to solve this issue by adding a single, always on, node within my sharing network. I added a Raspberry Pi as my node. I have this on all the time already, performing a number of tasks, so I thought I’d add BTSync to it (following the guide here) and allow me to sync my files. However, Jack misses a crucial step in his effort to replace Dropbox - the remote access.

I got around this issue as the Pi already has SSH running to allow me to remote in and administer it, so it was a simple case of using either SFTP or other SSH file system tool (I use Dokan SSHFS on Windows (Expandrive works better, but I can’t justify the expense at the minute), Transmit on Mac) to access my data. This “tricks” my computer into thinking the data is held locally, but it’s really on my Pi at home. So far, it’s been working flawlessly - editing the files on the Pi will sync back to my Mac when I get home and switch the machine on.

Advanced Settings and Versions

Like Dropbox, BTSync keeps versions of files. These can be found in the .SyncArchive folder (which can be opened by Right Clicking on the folder within the program or browse to the folder within your file browser of choice).

Versions of files

These file versions are kept numbered within this SyncArchive folder. If you regularly update large files, you might want to consider clearing this out at times as it might take up a lot of space. Bitttorrent has this to say about versioning:

**Does BitTorrent Sync support versioning?** Yes, versioning is available in BitTorrent Sync. It creates and stores all the old copies of edited files for the period of 30 days (this default period can be changed in General advanced preferences - sync_trash_ttl). The versions are stored in the hidden .SyncArchive directory within your sync folder that you can open by right click on the sync folder and choosing ‘Open SyncArchive’.

Therefore, if you decide that 30 days of versions are to many, you can change the settings in the Advanced Settings within the settings menu.

One of the benefits to torrent sync is that you can share files to family members, friend and co-workers. Dropbox allowed you to do this but if the other person accidentally deleted a file, it would delete on all machines. BTSync offers a read only sync function.

Read Only share key

This can be accessed by right clicking a folder within the program and selecting “Show folder preferences”. The read only key does as it says - it syncs all the files to the recipients device but that are unable to delete or change anything. So you can now share your holiday photos and not risk them being deleted!

The other tab at the top of the preferences window sets the advanced preferences for the folder being shared.

Advanced folder properties

This lets you have deeper control over how the data is shared. As can be seen, there are a number of options. These are:

  1. Use relay server - This uses the bittorrent sync server as an intermediary server to help direct clients to find each other. Disable this if you want no communication with the Bittorrent server for any reason.

  2. Use tracker server - This option means that the Bittorrent server is used to direct connections to individual instances

  3. Search LAN - As stated, searches the LAN for instances of BTSync.

  4. Search DHT network - Use DHT (Distributed Hash Table) to connect to different peers (if ticked, the instance stores details of other clients it’s connected to and shares this with any other clients that connect to it).

  5. Store deleted files - As stated, for storing deleted files.

  6. Use predefined hosts - If you don’t want to use the Bittorrent servers to help connect to other clients, you can add either an IP or domain here. For example, for instances outside my network, I could turn off tracker and relay servers and specify my (dynamic) domain name of my Raspberry Pi here for the client to automatically connect to that client.

In this way, you can setup the client to complete ignore third party services (by disabling relay and tracker). By enabling DHT and predefined hosts, you can have a single node acting as a “server” for your other nodes.

Compare this to services such as Dropbox that will require you to connect to the server to store data and connect!

Mobile Apps

Bittorrent have outdone themselves in regards to mobile apps. They offer an iOS and Android client. When you create a secret key, you can also generate a QR code to connect to a server.

iOS App

The iOS BTSync app allows you to sync folders from your PC’s to the iOS device. It also (conveniently), allows you to sync between other mobile devices and to backup your photo roll. However, the iOS app suffers from a number of limitations - namely, it only syncs when the application is running.

iOS app - Screenshots

As can be seen, you can only backup the camera roll, though you can download any file to the device. When you add a folder, it adds a list of files being shared (as seen in the left of the photo)

Android App

Unfortunately for iOS users, the Android app is far better than the iOS app but this is due to the programming of the individual operating systems rather than the app itself. The iOS app can only sync when open, the Android app runs in the background.

Android app - Screenshots of different pages

As you can see in the top left hand corner of the screen, a similar icon to the Windows/Mac/Linux icon is shown. BTSync can run in the background of an Android phone, keeping files either backed up or in sync. In addition to that, Android isn’t restricted to only backing up the camera roll and can back up (or sync) any folder you want on your phone.

Conclusions

Even though the software is in Beta, BTSync works extremely well, keeping computers in sync.

The programs allow files to be easily synced (and versioned) between you and wherever you are. It may not be as simple as Dropbox but it’s better for those that want consider the privacy of their data or for those that want an automatic syncing solution that perhaps doesn’t rely on a third party server.

It’ll be interesting to see if Bittorrent add additional features - at the minute, I can’t see to much more I would want added. The current feature set works and works well. I can’t even see the need for easier selective sync. Perhaps an API (which is in the works) to allow apps or similar, to sync would be a good idea.

I don’t forsee this ending Dropbox’s reign on desktop/device syncing as that seems to be fairly well entrenched at the minute and BTSync does require more steps to setup compared to Dropbox. However, for those that are more tech say than the average user, then BTSync offers a very decent application and service.