In addition to my Mac Pro, I now have a 12" Powerbook that I use on the go. Having two computers introduces the hassle of keeping them in sync. Since .Mac comes with a 60 day trial, I decided I'd give it a try. For what it does, it does it well: it kept my mail, bookmarks, calendar and address book in sync, but nothing else.
However, .Mac costs $100 a year and it didn't meet all my needs. It did, however, offer a whole bunch of solutions (in the form of cloud computing) that I didn't want because rather than used someone else's cloud, I'd rather roll my own open source cloud. I don't use flickr, gmail or wordpress.com for this very reason, so why would I want .Mac email, webhosting, galleries, etc? All I really want to do is keep to Macs in sync, including all my documents. I googled and the best I found was Geek Throwdown: How to sync two or more Macs?.
Enter Unison. Here's a quick guide:
rm -rf)..unison in my home directory on my Mac Pro. Inside that directory, I created a file sync.prf. Here's the contents of that file, annotated to explain what each line means:# Roots of synrchonoization
# I want to sync my entire home directory of the Mac Pro, the local machine with
root = /Users/brianpuccio
# ... my PowerBook, hostname beta, the entire home directory
root = ssh://brianpuccio@beta.local//Users/brianpuccio
# This synchronizes file modification times
times = true
# This turns off logging
log = false
# This tells unison to ignore some files and paths
# http://alliance.seas.upenn.edu/~bcpierce/wiki/index.php?n=Main.WikiSandbox
ignore = Name .FBCIndex
ignore = Name .FBCLockFolder
ignore = Name {Cache*,.Trash*,.VolumeIcon.icns,.HSicon,Temporary*,.Temporary*,TheFindByContentFolder}
ignore = Name {TheVolumeSettingsFolder,.Metadata,.filler.idsff,.Spotlight,.DS_Store,.CFUserTextEncoding}
# ~/.fseventsd/ is owned by root, don't have privledges to this, so ignore it
ignore = Name .fseventsd
# Unison is also the name of a usenet client http://www.panic.com/unison/
# This ignores its very large and often changing cache, which is fine since I don't use it on the Powerbook
ignore = Path {Library/Application Support/Unison/news.usenetserver.com}
# This is Mail's cache of my IMAP accounts, since this was large and I kept having Unison crash on the
# first few syncs, I omitted this path figuring Mail on the PowerBook would sync once it went online
# It worked, so I left it alone and in here
ignore = Path {Library/Mail/IMAP-*}
# This is my aperture library and it is too big to fit on my PowerBook (and the PowerBook too slow to run Aperture)
ignore = Path {Pictures/Aperture Library.aplibrary}
# It seems like Unison should automatically ignore its own config folder, but it didn't for me, so I added this
ignore = Path .unisonunison sync (sync because that is the name I cave the preference file, sync.pref.For the most part, it worked. All my files were moved over, my keychain and all its passwords, my browsing history and bookmarks, my Adium settings, accounts and chat histories, my Colloquy settings and chat logs, my dock, my background ... quite literally everything.
There are a couple of issues:
~/Library/Preferences/com.apple.dock.plist, ~/Library/Preferences/com.apple.dashboard.plistand ~/Library/Preferences/com.apple.finder.plist) are constantly modified by the OS and the very act of logging in to both machines means they both have their timestamps changed, which means Unison doesn't know which one you want to sync to the other, so it displays a ? instead and the default is to do nothing. Of course you can go through each of these one by one (or even en masse) and set that sync to be a Left to Right or Right to Left sync. I'm going to try using the force option and either favor a root explicitly or use the newer option.I will update this as I make improvements.