MacOS – How to Sync MacOS Applications + Preferences across multiple Macs without OS X Server

gitmacosmigrationpreferencesterminal

Will the following work? If not, can someone propose better alternaives to solve this problem?

Summary problem: I want to sync multiple MacBook Air's, Pro's and possibly Mini's with the same user-account info, for only one account–call it myuser. All systems will have the same MacOS major rev. eg: they're all 10.7 or 10.8 or higher. I do NOT want to employ OS X Server for the synchronizing.

Summary, proposed solution: git-sync the Preferences and /User/myuser directory, rsync the Application directories, and use known-working mechanisms (Dropbox, IMAP) to sync everything else.

Details.

Migration Assistant is unreliable for complete copy/sync per this and this and my personal experience. ChronoSync, per this discussion looks interesting, but I don't know exactly what it's doing for Preferences… and I want to exactly what's going on. I've also restored TimeMachine backups and found they do not replicate the environment I backed up (huge disappointment). I'm an experienced system admin on non-MacOS sytems, so consider me a control freak.

I've used git to sync Terminal.app/shell settings in /User/myuser and Thunderbird profile(s) across multiple Macs (git branching for diff Thunderbird profiles on different Macs if/as need be provides useful flexibility). Despite the lack of depth of git's file-metada management, this has worked well. I'd like to git-sync (to a "central-repository" server/service like Bitbucket) the following directories across my Macs, employing branches as needed/wanted for unique customizations:

  • /Library/Preferences
  • /Library/PreferencePanes
  • ~/Library/Preferences
  • ~/Library/PreferencePanes

(Everything else in ~/Library and /Library appears to be uninmportant or automatically regenerated.)

Then I plan to rsync the following together (git is less useful here due to ease of recreating installed applications plus less practical due to size of /Applications):

  • /Applications
  • ~/Applications

I realize I may need to close all pertinent applications+processes in order to properly sync the Preferences and Applications spaces and avoid running-process locks and related problems.

I'm not as familiar with any Preference-management-magic that might be in auto-deployment systems like Absolute Manage, Casper, Munki, Sikuli, Salt and similar tools. Would love to know if there's Preference-management capability/knowledge/know-how in these tools, and if so, how to reuse said knowledge. Each of the said tools seem to address a broader scope of requirements and present a higher barrier to entry/employment. I'd rather just start with my very easy to setup git-based method on ~/Library/Preferences (and the like) going.

All of the other directories on these systems–particularly in /User/myuser–are being synchronized via other means, like Dropbox, IMAP email, and similar, already-proven methods like rsync. I'm less certain rsync will work for copying /Applications, hence the specific call-out above.

Best Answer

Seems like ChronoSync could help in a limited way. The support pages have warnings on syncing ~/Library. See ChronoSync - Syncing your Home folder.

You could try Unison for everything instead of multiple tools and approaches (one caveat is that Unison was last updated in 2009; it's source is available under GPL though).

References:
Unison Frequently Asked Questions (FAQ)
Using Unison on Specific Operating Systems