In this blog post I'll be describing my personal workflow  and how I sync settings between multiple macOS machines.
Why syncing/backing up?
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, 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 and etc), this is leveraged in a few different ways.
Self synced application
Web browsers like Firefox  offer an account/self-hosted server which syncs all the data.
Syncing via external tools
Since applications store their data in a self-contained manner, 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  doesn't need an introduction, 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  is an open source python utility that is meant to keep your macOS and Linux applications in sync.
Mackup does this by creating copying the application configuration files to a shared drive (or a path) and symbolic linking to it.
Installing and configuring mackup
After installing Mackup, create a configuration file in your user's home directory 'touch ~/.mackup.cfg'.
Configure your preferred support storage method .
Edit the Mackup configuration file with your selected storage method and include which applications you want to sync (full list can be viewed by running 'mackup list'):
vi ~/.mackup.cfg [storage] engine = icloud # Enter your preferred method [applications_to_sync] # Enter supported applications which you want to sync bettertouchtool iterm2 vscode-insiders tunnelblick git itsycal
mackup backup (try saying it quickly 5 times) in order 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 in order to create symbolic links from shared storage to local machine.
To remove symbolic links you can run
Adapting applications to be supported by Mackup can be easily done by following Mackup's documentation .
Most macOS applications excels at backing up your configuration, and there are ways to fill the gaps for those who don't.