A file synchronization tool, distributed under GNU GPL, written in OCaml.

Unison is able to synchronize single files and directories over network. It works as a normal program and need not to be run as root, doesn't require any extra daemons, just a copy of the binary in both ends. Further, it's cross-platform, able to communicate with Unix, Windows and Mac systems. It also supports SSH-encrypted connections.

I used Unison to solve my filekeeping problems. Originally, I just needed to copy my Mozilla bookmarks to keep them on sync in home and on university box, and for that, scp was enough; after that, when multiple files were needed, it got tricky. I found Unison better than manual copying of the file anyway: You don't need to say where the file is supposed to go, because Unison can say which file was modified and can copy the file from there. Also, it apparently uses some strange diff format for transportation, because it is vastly faster than scp'ing the whole file.

It has a very clear command-line interface, but also has graphical (GTK+, at least) frontends.

Home page, as of writing: <http://www.cis.upenn.edu/~bcpierce/unison/>. Also available as a Debian package.