Backing up and syncing macOS environment
Note
In this blog post, I'll be describing my workflow and how I sync settings between multiple macOS machines.
Why Syncing/Backing Up
It seems like an obvious question with an obvious answer, but for each individual, there is a different reason.
To me personally, syncing/backing up is used for continuity.
A piece of text I copied, a setting I changed, or a link I saved must continue to exist and be present regardless of which machine I work on.
macOS And Application Data
One of the “advantages” of macOS applications is that they’re self-contained and are not dependent on external configuration files (like registry in Windows, etc.).
This is leveraged in a few different ways.
Self-synced Application
There are applications like Paste, Canary Mail which sync all their data via iCloud naively, which then can be quickly restored/synced through their settings interface.
Web browsers like Firefox offer an account/self-hosted server that syncs all the data.
Syncing Via External Tools
Since applications store their data in self-contained, there are tools to sync configuration files between machines.
How Do I achieve Continuity
If the application doesn’t support native sync, I use git for configuration files (personal preference) and Mackup for application data.
git
git doesn’t need an introduction, and it’s one of the most popular version control software.
I keep my dotfiles in a repo (mentioned above).
Dotfiles are part of my git flow because I want to keep track of the changes, and I don’t want them to be synced immediately (unlike application configuration).
Mackup
Mackup is an open-source Python utility that is meant to keep your macOS and Linux applications in sync.
Mackup does this by copying the application configuration files to a shared drive (or a path) and symbolically linking to it.
Installing And Configuring Mackup
Mackup can be installed via pip, homebrew or directly from the git repo.
After installing Mackup, create a configuration file in your user’s home directory:
touch ~/.mackup.cfg
Configure your preferred storage method.
Edit the Mackup configuration file with your selected storage method and include which applications you want to sync (the complete list can be viewed by running mackup list
):
vi ~/.mackup.cfg
# File content
[storage]
engine = icloud # Enter your preferred method
[applications_to_sync] # Enter supported applications that you want to sync
bettertouchtool
iterm2
vscode-insiders
tunnelblick
git
itsycal
Afterward, run mackup backup
(try saying it quickly five times) to backup files to selected storage (verbose is shown by adding -v
flag).
On other machines, download Macckup, copy the configuration file, and run mackup restore
to create symbolic links from shared storage to the local machine.
To remove symbolic links, you can run mackup uninstall
.
Adapting applications to be supported by Mackup can be quickly done by following Mackup documentation.
Summary
Most macOS applications excel at backing up your configuration, and there are ways to fill the gaps for those who don’t.