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?