File synchronisation

December 26, 2010

If anyone mentions Dropbox to me one more time, I will scream. I'm sure it's a wonderful solution, but I have deep misgivings about handing my data over to someone I don't trust.

Besides, my synchronisation needs are not that complicated. Here are my high-level requirements:

  1. Two way synchronisation between multiple clients and a central server.
  2. Automatic syncs - no requirement for manual triggering.
  3. Graceful handling of network outages, suspends, etc.
  4. If using ssh, running from within my X session (so that it can access my ssh-agent)
  5. Some assurance that my data will not be passed to other people (e.g. by running everything on servers I control, or encrypting all the data with keys only I hold)
  6. Regular backups of the central data.

I've been playing about with several ideas - I know some people try to do this sort of thing with git, but I don't have a need for version control right at the moment, and merging conflicts could be far too complicated.

I did hack together a script involving lsyncd and NetworkManager's dbus signals, but then realised that synchronising in the other direction would need something quite different, and it was getting a bit out of hand by that point.

So my current favourite is actually GNOME's Conduit project. It ticks almost all of the boxes (apart from the backups, which should be simple to put together). There are some rough edges - the author has tried to delegate the minor detail that it's accessing an SFTP share entirely to GIO. But GVFS shares are not mounted automatically by Conduit - so I would have to browse to the remote folder in Nautilus before any synching would happen in each session. Bad.

But looking at how Conduit is used, I don't agree with hiding the nature of the remote folder from the user. By all means use GIO to perform the mechanics of SSH and so on, but the user surely thinks of the remote server as something different to a local folder? So from a UI perspective, this should be made explicit. After all, the user has to deal with it at some level by switching to Nautilus to set up the connection.

And since I cannot find an SFTP plugin for Conduit anywhere, this still leaves me in the unfortunate position of having to write code if I want a nice solution. Bah, humbug.

Nifty tech tag lists fromĀ Wouter Beeftink