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.
~/Library/Preferences/ByHost/
files, because they are all named as com.apple.blah.UUID.plist, where UUID is the hardware UUID of each machine. You can get the UUID for a machine viasystem_profiler SPHardwareDataType | grep UUID
~/Library/Preferences/ByHost/
. And since eachByHost
file has a unique name, and presuming (?) that a MacOS machine with UUID = X would ignore files with UUID = Y, I don't see a problem with this. Do you?ByHost
filenames suggest that the responsible apps/etc are less impactful for my workspace/environment than the non-ByHost
preferences. (Or at least, that's my current, wishful thinking.) As such, I'd plan to have to manually manage/copy theByHost
-based preferences, and maybe make a script(s) to copy the more-impactful ones.