55

I have three computers (2x OS X and 1x Ubuntu) and Android tablet. I'm trying to find a tool to automatically sync files between the computers and the tablet. Backups are handled separately, so there's no need for versioning.

Over 100GB of files should be synced between computers and a few gigabytes between computers and tablet. Therefore, services like Dropbox, Google Drive or OneDrive are not really practical, as the price is relatively high. Additionally, I don't need or want cloud syncing, as syncing that amount of data over internet takes quite bit of time (and money, depending on location).

2
  • I have successfully used Gluster to keep large files synchronized across servers. It runs on Linux and OS X, though not Android. However, it certainly is not user-friendly, requiring a significant amount of manual configuration. Commented Feb 21, 2015 at 21:45
  • Google Drive now offers a 200GB subscription plan, so the price may not be a problem anymore.
    – ahorn
    Commented Sep 28, 2019 at 14:29

6 Answers 6

28

Bittorrent Sync (wikipedia) seems to fit rather well. It automatically syncs files between devices whenever a connection is available, handles collisions if those happen, and is compatible with Linux, Android, OS X and Windows, among others. It does not require a central server (or specific laptop) to be available.

On the negative side, it's still beta, and might be discontinued. However, recent news says that its userbase is already over 2M, so discontinuation is probably not the biggest risk.


My experiences so far:

  • Seems to work surprisingly well.
  • Syncing to a phone is not always working without manually starting the app. This might also be just my impatience.
  • Actively syncing (adding new files) on phone consumes quite a bit of battery. However, this is expected, as it rather resources intensive (preventing sleep, writing to flash, and keeping wifi active). This was the only problem during initial sync (adding 10GB of photographs).
  • Performance over LAN/wifi is good. Easily, and constantly saturates the network. There're options to limit both upload and download rates.
  • Clocks must be synced (relatively well, +-5min is tolerable), otherwise Sync refuses to work.
  • Setting up shared folders is easy, but there's no way to exclude some of the contents (for example, temp files).
  • In addition to syncing home computers and phone, I am now using Sync to publish files to my server. When sharing something, I save/export it to synced folder, and it's automatically downloaded to the server. Easier/faster than running sftp manually.
6
  • 3
    I'd also add that this runs on nearly anything - I've run the Arm build on a raspberry pi quite successfully, and it would run on many other arm based systems including NASes. Commented Feb 22, 2014 at 0:46
  • I am not sure whether that's OK or not, but I just stole your answer and posted a slightly modified version at softwarerecs.stackexchange.com/questions/3255 Is there any rule about that? I can delete it if you want to post it yourself. Cheers :-)
    – Nicolas Raoul
    Commented Apr 15, 2014 at 14:34
  • @NicolasRaoul dunno - I don't see why you couldn't, especially when giving attribution.
    – Olli
    Commented Apr 15, 2014 at 19:58
  • 2
    How does Bittorrent Sync resolve conflicts? Commented Aug 11, 2015 at 10:58
  • Syncthing is an open source alternative to Bittorent Sync (now Resilio) Commented Mar 16, 2018 at 14:24
15

You could sync your devices via SSH:

  • on the Linux and MacOS machines, using rsync, and schedule it via Cron
  • on Android, there's e.g. FolderSync, which can deal with SSH (and several other protocols, including FTP and a couple of cloud services, so it could serve other purposes as well). It brings its own scheduler, but with its paid version can also be controlled via Tasker.

FolderSync menu FolderSync: Define FolderPairs FolderSync FolderPairs
FolderSync Screenshots: Main page, define folder pairs, defined folder pairs (source: Google Play; click images for larger variants)


My personal experiences

I'm using FolderSync on all of my Android devices e.g. to have my (Titanium Backup / AppMonster) backups stored on my PC, and also keep my work-logger data in sync. Initially, I encountered some problems with the one-way sync of the latter (don't remember the details exactly); but switching to two-way seems to have solved those as well. The integrated scheduler wakes the device all 5 minutes to check whether there's something to do, even if you have only one daily event scheduled – which is why I turned that off, and use Tasker to trigger the syncs. Once set up, I sometimes even forget it's there: works smoothly, and whenever I need to access my data from the PC, it's simply there and up-to-date (e.g. when preparing the timesheet based on data created on the Android device).

No need to talk about the reliability of Cron (never failed me). I'm using rsync on my Linux machines for a lot of stuff – but mostly uni-directional; so I cannot share experience from bi-di syncs. For what I sync with it (and that's a lot), I'm very pleased with it. Command-line might need a little learning concerning the parameters and which to use when; I've setup my own scripts for dedicated purposes, so I don't have to remember all the options.

0
12

With git-annex and git-annex-assistant you can synchronise files between all of these (and more), even tell it things like “for this subset of files, ensure it's always on at least two computers but at most one tablet” and other virtually arbitrary rules. The git-annex-assistant is the “user-friendly” side to the command-line git-extending git-annex utility, including Android, Web and other interfaces. While it may not yet be fully stable in all versions, joeyh is actively working on it, so it will get even better over time, especially as more people will use/test it.

(I linked to the kickstarter page, even though the assistant is already funded and over a year in development, because it has lots of links and amazing detail.)

I’ve used it myself (git-annex, not the assistent yet), and it’s a useful tool, but sometimes you need to think around the corner to use it to its fullest (but then, you can do things with it even the author didn’t think of; such as, an OwnCloud replacement that worked even better). No issues with compatibility, only with the one or other rare bug. Regressions did happen, but even more rarely, and were usually quickly fixed. The developer is very approachable.

3
  • I'll check that out. Android support doesn't seem to be too stable, though.
    – Olli
    Commented Feb 5, 2014 at 0:30
  • Have you used git-annex(-assistant)? Can you actually recommend it? Anything good/bad? It's actively being developed, any backward compatibility problems/regressions encountered?
    – Olli
    Commented Feb 14, 2014 at 13:23
  • 2
    This solution has a lot of moving parts, but once you get them all turning the result is pretty spectacularly versatile. This is definitely the "have your cake and eat it to" solution for this problem.
    – Caleb
    Commented Feb 25, 2014 at 9:29
12

Unison is a file synchronizer. It's good at synchronizing files between two machines, where the files can be modified on either of the two machines. If your requirements are “rsync, only two ways”, then Unison is exactly what you're after.

With more than two machines, use a star pattern: one central machine that which all other machines synchronize with.

I've been using Unison in this way since its early days (on Linux and the occasional Windows), and haven't seen an alternative come up that seemed to solve the same problem. Distributed version control systems (Mercurial, Bazaar, Git, …) can also do file synchronization as a side effect, but they're a lot more heavyweight: they're useful if you're going to do serious work on the files on each machine.

Unison can be used both from the command line and with a simple GUI. It works on Linux, OSX, and other Unix variants as well as on Windows. To synchronize with the Android tablet, you can use the native Android port (which comes with an SSH server) with optional GUI.

8
  • Well, the requirement is not "rsync, only two ways". As of star pattern, it requires that central machine that's always (or almost always) available.
    – Olli
    Commented Feb 5, 2014 at 1:14
  • 1
    @Olli Without a star pattern, you're going to have a hard time avoiding conflicts. Unison warns you about conflicts but does not really help to solve it. To have a chance of solving conflicts, you get into version control software (e.g. git-based), which is more powerful but harder to use. Commented Feb 5, 2014 at 1:42
  • With star pattern, there's going to be hard time with conflicts, if files are modified simultaneously. Star pattern doesn't fix that at all.
    – Olli
    Commented Feb 5, 2014 at 1:44
  • Also, git-annex (or git in general) helps in solving conflicts (compared to what Unison does) only if it is possible to merge files. Which is not the case with e.g images or videos.
    – Olli
    Commented Feb 5, 2014 at 1:47
  • Have you used Unison for this? Do you know it works well? Can you actually recommend it? How is the Android port?
    – Olli
    Commented Feb 14, 2014 at 13:22
3

I used GoodSync (wiki) it to sync huge directories between two Windows desktops and one Ubuntu. Mac and Android support is also declared, of cause. What I personally liked:

  • a lot of scheduling / including/excluding direcories/patterns / conflict strategies / hieraric jobs / whatever settings/configurations.

  • nice visualization of the sync progress

GoodSync Window with Right Click Menu

  • it works (already not very bad for syncing software)

However, this is commercial software, and not cheap (40$ for Mac after 30-day trial period).

1
  • Didn't know about this, thanks for suggestion. Even though I did not explicitly declare it, $120 (one license per device) is a bit too much for me, as there's free alternatives.
    – Olli
    Commented Feb 7, 2014 at 12:51
1

I've used Chronosync for a few years now at work to keep my OS X computers in sync and overall it works well. It is currently available for the OS X Platform. A full feature list can be found here. You could certainly use it to also synchronize your files on Ubuntu if you set up access to it from the OS X machines.

Some of the basic features it provides are manual or automated syncing, filtering, special file handling, file deletion synchronization, and many other features. And it's surprisingly cheap at $40 for a single license.

I do not own an Android phone so I"m not certain how you connect your Android phone to your OS X computer, but if it is mounted as a disk drive, there is no reason why you couldn't then use this software to synchronize the data, but I wanted to at least share this program with you in case it helps you accomplish what you are looking for. Cheers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.