Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I spend the majority of my time working at my desktop Mac, which I have configured for my web development environment. My spouse has a MacBook for casual use, and I occasionally steal it back when I need to work off-site, or when travelling. The question is how to best synchronize the two so I can switch between them more readily.

I've solved a few obvious things by using online services:

  • Email is hosted on IMAP.
  • Working files are in Dropbox.
  • Source code is managed in git.

However, the following are things I always miss when jumping on the laptop:

  • Installed Applications (current versions)
  • Installed libraries & utilities (/usr/local)
  • Apache VirtualHosts & other configurations (/etc)
  • Disk image files for VMs

My current method is to connect the MacBook via Firewire target mode and rsync the /Users/me home directory, and then cherry-pick the other items I need from Applications, /etc and /usr/local. The problem with this method is that it can be very time consuming due to things like my virtual machine image files, cached emails, etc.

How can I make this faster & easier? Can you recommend a solution for configuration management (so I can repeatably install & configure the same software on both), or synchronization (so I can bring the MacBook up to date nightly, over our home network)?

share|improve this question
    
You get most installed applications by putting them in ~/Application in the user domain. Notable exceptions include everything with an installer, unfortunately. –  Daniel Beck Jan 8 '11 at 18:49
add comment

4 Answers

I use Unison to do just what you're trying to do. Apps (some of them anyway) can be a special case as Daniel Beck pointed out, but the self contained ones (most typical ones) will transfer ok. It's the result of a research project that is no longer under development but I found it no less useful, for that.

You can run it from its GUI or the command line. It needs a config file (text) that describes what files you want to sync (can be wild-carded), which you'll need to keep up to date, to the extent you pick and choose files to sync. If you are content with syncing your entire home folder (!), than keeping up the config will be trivial. It tries to be smart about what/how much to sync. Speed will depend on the point-to-point throughput on your LAN.

I made my config files as host-specific header files that include by reference, a common files spec, which I also keep synced, so I can sync from either keyboard, as long as both machines are up, on the same network, and have remote login enabled.

share|improve this answer
add comment

Check out Synk. I've been using it to sync my MacBook and Mac Pro. I've been pleased thus far, and the developers are very responsive.

enter image description here

share|improve this answer
add comment

Have you looked at ChronoSync? This might work well, but you'd need to be careful to keep it up-to-date with all the stuff you need synchronized.

enter image description here

share|improve this answer
add comment

Sorry, I don't think there's a cheap fix for this. One expensive way might be to set up an OS X server and turn your local accounts into a managed mobile account. This would keep your user home on the server. The mobile home folder contents would be synced with the server and with the other network client machines whenever they are connected to the home network. This would get most of what you want.

You can have an Applications folder in your User folder but I'm not sure why you wouldn't just keep the Apps installed on both machines. Maybe they change often I'm guessing. Some special scripting would have to be devised to copy out items from /etc and /usr/local/.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.