I’m sure that a lot of people, as I do, use both desktop and laptop computers. One of the things that is always a potential problem with this is that, without some kind of file management strategy, the version you want of the file you want is sometimes going to be on a machine other than the one you’re using. There are a few different approaches to dealing with this:
- You can identify “master” and “slave” machines for each type of data, and always update the slave from the master whenever possible.
- You can use an on-line service (like box.net) to make your important files available on the Internet, and use only Web or IMAP mail services.
- You can use a software tool (such as rsync(1) in Linux/Unix) to keep files on the different machines up to date.
The first approach is difficult to implement and stick with, unless perhaps you are a lot more organized than I am. The second works, but has potential limitations on the amount and kind of data that can be stored; there may also be confidentiality issues with sensitive data. The tools available for the third approach have, like rsync, historically been focused on the situation where one wants to distribute common information (e.g., software configurations) from a central point to a number of client machines.
For the last few months, I have been using a file synchronization program called Unison, which gets around many of these issues. The program is open source, and licensed under the General Public License of the Free Software Foundation. It has some features from version control systems, like Subversion or CVS, and some from software like rsync. It keeps track of the state of files and updates within specified directory sub-tree(s) on one or more machines; it can automatically propagate unambiguous changes, and present potentially conflicting ones to the user to resolve, at that time or later. Multiple profile (configuration) files can be set up for different synchronization jobs.
I’ve been using it for a few months now to synch files on my laptop and desktop machines, and it works like a charm. It does require a little pre-planning to set things up for the easiest and best results. There is one important caveat: you need to make sure you have the same version of Unison on all the machines you are using,
The program was developed by some folks at the University of Pennsylvania, comes with excellent documentation, and is available for Linux, Windows, and Mac OS/X at the Unison project site. Ubuntu and many other Linux distributions have Unison packages already available through the usual package management mechanisms.