I have a laptop where I keep writing stuff. "Writing stuff" includes a vast, mixed collection of essays, freemind mindmaps, downloaded pictures, clips, some programs, and generally - a heterogenous collection of various ideas that I might find "useful". I also have a computer at home, where I intend to keep that stuff.
My home computer has a more extensive collection of the heavy media such as clips and pics, and as such, the folders to clips and pics are actually symlinks to different partitions specialized for that media. By contrast, my laptop (mobile collection) has a more updated collection of the light media such as essays, mindmaps, outlines and plans and keeps the whole structure under a single filesystem which is much smaller than my home collection. I have previously used rsync to synchronize the contents of either one, but I am running under some constraints. 1) the soft collection (essays, mindmaps, etc) is always more updated on my laptop 2) the pics collection sometimes is more updated on the laptop, and is sometimes more updated on the desktop. 3) every once in a while, I refactor all or part of my collection - moving/renaming files and folders around. A naive rsync will cause those folders to be retransmitted, wasting a considerable amount of time / bandwidth. 4) the heavy media are huge - on the order of 1-4 gigabytes a subfolder - and cannot easily be moved around via the internet. I would ideally want something that allows offline / delayed synchronization. 5) I don't intend to carry the entire collection on to my laptop - only the bits and pieces that will fit. But I want deletions and removals from my laptop to carry on to my desktop. At the same time, I don't want a synchronization from my laptop to my desktop to (what a nightmare!) erase the bits on my desktop that I didn't intend to carry at all. I was looking at various software for the job and I eventually thought of settling down on a 3rd generation distributed version control system. bzr and mercurial come to mind, but I'm not sure how to take any one. How would I do this?