Top Related Projects
Quick Overview
Mackup is an open-source tool designed to keep your application settings in sync across multiple machines. It backs up your application configurations and syncs them using cloud storage services like Dropbox, Google Drive, or iCloud. This allows you to maintain consistent settings across different computers and easily set up new machines with your preferred configurations.
Pros
- Supports a wide range of applications and tools (300+)
- Flexible sync options with various cloud storage providers
- Easy to use with simple commands for backup and restore
- Customizable through configuration files
Cons
- Potential conflicts if syncing between different operating systems
- May require manual intervention for some application configs
- Limited support for Windows compared to macOS and Linux
- Syncing large configuration files can consume significant cloud storage space
Getting Started
- Install Mackup:
brew install mackup
-
Configure Mackup (optional): Create a
.mackup.cfgfile in your home directory to customize settings. -
Back up your files:
mackup backup
- Restore files on a new machine:
mackup restore
Note: Ensure your chosen cloud storage service is set up before running Mackup.
Competitor Comparisons
👢 Bootstrap your macOS development system.
Pros of Strap
- Focuses on automated macOS setup and configuration
- Includes Homebrew installation and package management
- Offers customization through a
.Brewfile
Cons of Strap
- Limited to macOS systems only
- Requires more setup and configuration compared to Mackup
- Less flexible for cross-platform use
Code Comparison
Mackup (Python):
def copy(self, src, dst):
"""Actually copy the file."""
if os.path.islink(src):
linkto = os.readlink(src)
os.symlink(linkto, dst)
else:
shutil.copy(src, dst)
Strap (Shell):
brew bundle --global
for f in ~/.strap/packages/*; do
package=$(basename "$f")
if ! brew list "$package" >/dev/null 2>&1; then
brew install "$package"
fi
done
Key Differences
- Mackup focuses on backing up and syncing application settings across multiple machines
- Strap is designed for initial macOS setup and ongoing maintenance
- Mackup supports various operating systems, while Strap is macOS-specific
- Mackup uses Python for its implementation, whereas Strap primarily uses shell scripts
- Strap integrates more deeply with Homebrew for package management
@holman does dotfiles
Pros of dotfiles
- Highly customizable and modular approach to managing configuration files
- Includes scripts for automated setup and installation of various tools
- Provides a comprehensive set of configurations for multiple applications
Cons of dotfiles
- Requires more manual setup and maintenance compared to Mackup
- May have a steeper learning curve for users new to dotfiles management
- Less focused on backup and restoration across multiple machines
Code Comparison
dotfiles:
# bootstrap
#!/bin/sh
#
# bootstrap installs things.
cd "$(dirname "$0")/.."
DOTFILES_ROOT=$(pwd -P)
set -e
echo ''
Mackup:
def copy(self, filename):
"""
Copy a file to its destination.
"""
# Build the source path
src = os.path.join(os.environ['HOME'], filename)
# Build the destination path
dst = os.path.join(self.mackup_folder, filename)
The dotfiles repository uses shell scripts for setup and configuration, while Mackup utilizes Python for its core functionality. dotfiles offers more flexibility in customization, whereas Mackup focuses on simplifying the backup and restoration process across multiple machines.
rc file (dotfile) management
Pros of rcm
- More lightweight and focused solely on dotfile management
- Offers greater flexibility in organizing and structuring dotfiles
- Provides a command-line interface for easier integration with scripts and workflows
Cons of rcm
- Limited to managing dotfiles only, unlike Mackup's broader application support
- Requires more manual setup and configuration compared to Mackup's automated approach
- Less user-friendly for those unfamiliar with command-line tools
Code Comparison
rcm:
rcup -v
lsrc
mkrc ~/.vimrc
Mackup:
mackup backup
mackup restore
mackup list
Summary
rcm is a specialized tool for managing dotfiles, offering greater control and flexibility but requiring more manual setup. Mackup, on the other hand, provides a more comprehensive solution for backing up and syncing various application settings, including dotfiles, with a more automated approach. The choice between the two depends on the user's specific needs and comfort level with command-line tools.
A tool that bootstraps your dotfiles ⚡️
Pros of Dotbot
- Highly customizable with plugin support
- Allows for complex configurations and symlink management
- Supports multiple operating systems and environments
Cons of Dotbot
- Steeper learning curve due to more complex configuration
- Requires manual setup and maintenance of dotfiles
Code Comparison
Mackup configuration (.mackup.cfg):
[storage]
engine = file_system
path = Dropbox/Mackup
Dotbot configuration (install.conf.yaml):
- clean: ['~']
- link:
~/.bashrc: bashrc
~/.vimrc: vimrc
- shell:
- [git submodule update --init --recursive, Installing submodules]
Key Differences
- Mackup focuses on automatic backup and synchronization of application settings
- Dotbot provides more granular control over dotfile management and installation
- Mackup supports a wide range of applications out-of-the-box
- Dotbot requires manual configuration but offers more flexibility in file organization
Use Cases
- Choose Mackup for easy, automated backup and sync of app settings across machines
- Opt for Dotbot when you need fine-grained control over dotfile management and custom installation processes
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Mackupâ¢
Backup and keep your application settings in sync.
Table of contents
- Mackup
- Table of contents
- Quickstart
- Usage
- What does it do
- Supported Storages
- Unsupported Storages
- Supported Applications
- Can you support application X
- Personalization & configuration
- Why did you do this
- What platforms are supported
- What's up with the weird name
- Architecture
- Where can I find more information
Quickstart
On macOS or Linux, if you want an easy install, you can install Homebrew and do:
# Install Mackup
brew install mackup
# Launch it and back up your files
mackup backup
If not running macOS or Linux, or you don't like Homebrew, you can use pip.
# Install Mackup with PIP
pip install --upgrade mackup
# Launch it and back up your files
mackup backup
You're all set and can back up from now on.
Next, on any new workstation, do:
# Install Mackup
brew install mackup
# Launch it and restore your files
mackup restore
Done!
You can find more detailed instructions in INSTALL.md.
Usage
mackup backup
Back up your application files. Copy your local config files into the Mackup folder.
mackup restore
Restore your application settings on a newly installed workstation. Copy config files from the Mackup folder to your home folder.
mackup link install
Move your local config files into the Mackup folder, and link them to their original place.
$${\color{red}warning}$$ the link strategy doesn't work correctly on macOS
mackup link
On another workstation, links local config files from the Mackup folder.
mackup link uninstall
Copy back any synced config file to its original place. Removes the links and copies config files from the Mackup folder back into your home.
mackup list
Display the list of applications supported by Mackup.
mackup -h
Get some help, obviously...
What does it do
By only tracking pure configuration files, it keeps the crap out of your freshly new installed workstation (no cache, temporary and locally specific files are transferred).
Mackup makes setting up the environment easy and simple.
There are 2 modes of operations: copy mode and link mode.
Copy mode
Copy mode is used to back up and restore your files. The files are backed up into the configured Mackup folder, which can be in Dropbox, iCloud, or wherever you configure it.
It is covered by the 2 commands:
mackup backupmackup restore
Link mode
[!WARNING] If you are using Mackup on a current version of macOS, link mode will BREAK YOUR PREFERENCES. macOS Sonoma (macOS 14) and later don't support symlinked preferences, see issue #2035 for additional information. PR #2085 added copy mode, which should be used instead.
Link mode is used to move your config files into the Mackup folder, and link them back to their original place.
This mode is useful if you are using multiple workstations, and want to keep your application settings in sync at all times.
- Backs up your application settings in a safe directory (e.g. Dropbox)
- Syncs your application settings among all your workstations
- Restores your configuration on any fresh install in one command line
Let's take git as an example. Your settings for git are saved in your home
folder, in the .gitconfig file.
It is covered by the 3 commands:
mackup link installmackup linkmackup link uninstall
mackup link install
If you have Dropbox, these things happen when you launch mackup link install:
cp ~/.gitconfig ~/Dropbox/Mackup/.gitconfigrm ~/.gitconfigln -s ~/Dropbox/Mackup/.gitconfig ~/.gitconfig
Now your git config is always backed up and up to date on all your workstations.
mackup link
When you launch mackup link, here's what it's really doing:
ln -s ~/Dropbox/Mackup/.gitconfig ~/.gitconfig
That's it, you got your git config setup on your new workstation.
mackup does the same for any supported application.
mackup link uninstall
You can revert all your files to their original state.
# Just run this
mackup link uninstall
This will remove the symlinks and copy back the files from the Mackup folder in Dropbox to their original places in your home. The Mackup folder and the files in it stay put, so that any other computer also running Mackup is unaffected.
Supported Storages
- Dropbox
- Google Drive
- iCloud
- Anything able to sync a folder (e.g. Git)
See the README file in the doc directory for more info.
Unsupported Storages
- Box: No longer supported as it ignores dotfiles, see https://github.com/lra/mackup/issues/807.
Supported Applications
- 1Password 4
- 2Do
- Ack
- act
- Adium
- Adobe Camera Raw
- Adobe Illustrator CC
- Adobe Photoshop CC
- Adobe Photoshop Lightroom CC
- Adobe Photoshop Lightroom Classic
- aerc
- AeroSpace
- Affinity Designer
- Affinity Photo
- Affinity Publisher
- Airflow
- Airmail
- Akamai-CLI
- Alacritty
- AlDente
- AltTab
- Amethyst
- Ancient Domains of Mystery
- Android Studio
- Ansible
- AppCleaner
- AppCode
- Apple Music
- Apptivate
- Arara
- aria2c
- Arm
- Artistic Style
- asciinema
- asdf version manager
- Aspell
- Atlantis
- Atom
- Audacious
- AusKey
- Autokey
- Awareness
- AWS Command Line Interface
- ActivityWatch
- Bartender
- Bash it
- Bash
- Base
- Bat
- Bc
- Beatport Pro
- Beets
- BetterSnapTool
- BetterTouchTool
- Beyond Compare
- BibDesk
- Billings Pro Server Admin
- BitBar
- Bitchx
- Blackfire
- Blender
- ble.sh
- Boto
- Boxer
- Brackets
- Brave
- Btop
- Bump
- Bundler
- Byobu
- Caffeine
- Calibre
- Capture One
- Cartographica
- Cerebro
- Charles
- Cheat
- Chef
- Chicken
- Choosy
- chunkwm
- Cider
- ClashX
- Clasp
- Claude Code
- CleanShot
- Clementine
- CLion
- ClipMenu
- Clipy
- CloudApp
- Coda 2
- Codex
- Colloquy
- ColorSchemer Studio 2
- ColorSlurp
- ColorSync
- Composer
- Concentrate
- Conky
- Consular
- Contexts
- ControlPlane
- CopyQ
- CoRD
- CotEditor
- Ctags
- Cursor
- cVim
- Cyberduck
- DaisyDisk
- DataGrip
- Dash
- Day-O
- DBeaver
- DbVisualizer
- Deal Alert
- Deepin-dde-dock
- Deepin-dde-file-manager
- Deepin-Terminal
- Default Folder X
- Devil's Pie 2
- Devil's Pie
- dig
- Divvy
- Docker
- Dolphin
- Doom Emacs
- Double Commander
- Doxie
- Dozer
- Draft
- Droplr
- Dropzone 3
- Drush
- Eagle (ogdesign)
- EditorConfig
- Electrum
- Elgato StreamDeck
- Emacs
- Enjoyable
- Environmental Station Alpha
- eqMac2
- ESLint
- espanso
- Exercism
- ExpanDrive
- Factorio
- Factory Droid
- Fantastical
- fasd
- fastlane
- FastScripts
- Feeds
- FileZilla
- Finicky
- Fish
- Fisher
- Flake8
- Flameshot
- FlexGet
- Flux
- Focus
- Fontconfig
- FontExplorer X
- Forge
- Fork
- ForkLift
- Franz
- Gas Mask
- gdb
- Gear Player
- GeekTool
- GHCi
- Ghidra
- Ghostty
- Ghostwriter
- Gimp
- Git Hooks
- Git
- Gitbox
- GitFox
- GitHub CLI
- GitKraken
- GitUp
- Gmail Notifr
- gmailctl
- GMVault
- Gnome SSH Tunnel Manager
- GnuPG
- GNU Stow
- Go2Shell
- Goku
- GoLand
- Goldendict
- GoodSync
- GoShare
- Gradle
- GrandTotal 3
- grsync
- Hammerspoon
- HandBrake
- Hands Off!
- Hazel
- Hero Lab
- Heroku
- HexChat
- Hexels
- Hocus Focus
- Homebridge
- Homebrew
- Houdini
- Hstr
- HTML Tidy
- Htop
- HTTPie
- hub
- Hyper.app
- HyperDock
- HyperSwitch
- i2cssh
- i3
- IDA Pro
- IdeaVim
- IINA
- Inkscape
- Insomnia
- IntelliJIDEA
- IPython
- Irssi
- iStat Menus
- Itsycal
- iTerm2
- iTermocil
- iTunes Scripts
- JankyBorders
- Janus
- Jitouch
- Joplin
- jrnl
- JS Beautifier
- JSHint
- Julia
- Jumpcut
- Jupyter
- k9s
- Kaggle
- Kaleidoscope
- Karabiner Elements
- Karabiner
- Kdenlive
- KeePassX
- KeePassXC
- KeepingYouAwake
- Keka
- Keybase
- Keyboard Maestro
- Keymo
- KeyRemap4MacBook
- Khd
- kitty
- Kiro
- Krew
- Kubectl
- Kwm
- LaTeXiT
- LaunchBar
- lazydocker
- lazygit
- Ledger
- Leiningen
- lf
- LibreOffice
- Liftoff
- Light Table
- LightPaper
- LimeChat
- Liquid Prompt
- LittleSnitch
- Livestreamer
- Logitech Options
- Logseq
- Lollypop
- Loopback
- Luftrausers
- LunarVim
- MacDive
- MacDown
- MacOSX
- MacVim
- Magic Launch
- MagicPrefs
- Magnet
- Maid
- Mailmate
- Mailplane
- mako
- Marked 2
- Marta
- MATLAB
- Maven
- Max
- Mendeley Desktop
- MenuMeters
- Mercurial
- MercuryMover
- Messages
- Micro
- Microsoft Azure CLI
- Microsoft Remote Desktop
- mise-en-place
- mitmproxy
- mkcert
- Mole
- MonoDevelop
- Moom
- Mosaic
- Mou
- mpd
- MPlayerX
- MPS Youtube
- MPV
- MTMR
- Multitouch
- Mumu
- MusicBrainz Picard
- MuteSpotifyAds
- mycli
- myrepos
- MySQL Workbench
- MySQL
- Name Mangler
- Nano
- Navicat
- ncmpcpp
- Neofetch
- neovim
- Nethack
- Netlify
- newsbeuter
- ngrok
- ni
- Nomacs
- NoSQLBooster for MongoDB
- notion-enhancer
- Nova
- npm
- npmrc
- NSLogger
- nuget
- Nushell
- nvALT
- nvm
- nvpy
- OBS
- OfflineIMAP
- Oh My Fish
- Oh My Tmux
- OmniFocus
- OmniGraffle
- Openbox
- OpenCode
- OpenEmu
- OpenSSH
- Opera
- Oracle Cloud Infrastructure CLI
- Paintbrush
- Pandoc
- Pass
- Pastebot
- Path Finder
- PDFjam
- Pear
- Pentadactyl
- Perl
- Phoenix
- PhoneView
- PhpStorm
- PicGo
- Pidgin
- PIP
- PixelSnap
- PixelSnap 2
- Planner
- Plover
- Pnpm
- Pock
- Poedit
- Poetry
- PokerStars
- Polybar
- PopClip
- Popcorn-Time
- PostgreSQL
- Postico
- Pow
- Powerlevel10k
- Powerline
- Powerline-shell
- Prezto
- Processing
- Proselint
- ProxyChains NG
- ProxyChains
- Proxyman
- PrusaSlicer
- PsySH
- Punto Switcher
- PyCharm
- PyPI
- PyRadio
- Querious
- Quicksilver
- Quitter
- Qutebrowser
- Qv2ray
- R
- Rails
- Ranger
- Rbenv
- Rclone
- Rectangle
- Redshift Scheduler
- Redshift
- Remote Desktop Manager
- Rhythmbox
- Rime
- ripgrep
- Robo 3T
- Rocket
- Rofi
- Royal TSX
- RStudio
- rTorrent
- rtx
- rubiTrack 5
- Rubocop
- Ruby Version Manager
- Ruby Version
- Ruby
- RubyMine
- Rust
- RustRover
- S3cmd
- SABnzbd
- SBCL
- SBT
- Scenario
- Screen
- Screenhero
- Scrivener
- Scroll Reverser
- SecureCRT
- Secure Pipes
- Seil
- SelfControl
- Sequel Pro
- ShadowsocksX-NG
- ShiftIt
- Shifty
- Shimo
- ShowyEdge
- SHSH Blobs
- Shuttle
- SizeUp
- Sizzy
- SketchyBar
- skhd
- Skim
- Skitch
- Slate
- Slic3r
- Slogger
- SmartGit
- Smooth Mouse
- Soulver
- SourceTree
- SpaceLauncher
- Spacemacs
- SpaceVim
- SpamSieve
- Spark
- Spectacle
- Spectrwm
- Splice
- Spotify Notifications
- Spotify
- Sqitch
- Starship
- Startupizer2
- Stata
- Stats
- Stay
- Storyist
- Subler
- Sublime Merge
- Sublime Text
- Subversion
- SuperDuper!
- Surge
- Sway
- Swinsian
- Swish
- SwitchHosts
- T
- TablePlus
- TaskPaper
- Taskwarrior
- Teamocil
- Telegram for macOS
- Terminal
- Terminator
- termite
- Termux
- Terraform
- TextExpander
- TextMate
- Textual
- Things
- Tig
- Tiles
- Tilix
- Timeout
- tint2
- TinyFugue
- Tmux
- Tmuxp
- Tmuxinator
- Todo.txt CLI
- ToothFairy
- TotalSpaces2
- Tower
- Transmission
- Transmit
- TripMode
- Trizen
- Tunnelblick
- tvnamer
- Twitterrific
- Typinator
- Typora
- uTorrent
- ulauncher
- Ventrilo
- Verdaccio
- Versions
- Vim
- Vimperator
- Vimwiki
- Viscosity
- Visual Studio Code
- Visual Studio Code - Insiders
- Visual Studio Code - OSS
- VSCodium
- Visual Studio for Mac
- VLC
- Volt
- Wakatime
- Warp
- waybar
- WebStorm
- WezTerm
- Wget
- WhatsApp Web
- Windsurf
- Wireshark 2
- Witch
- WordGrinder
- WordPress WP-CLI
- Workrave
- X11
- Xee
- Xamarin Studio
- xbar
- XBindKeys
- Xchat
- Xcode
- XEmacs
- XLD
- Xonsh
- XtraFinder
- yabai
- yarn
- yazi
- youtube-dl
- Yummy FTP
- zabbix-cli
- zathura
- zed
- Zoom
- zoxide
- Zsh
- Ãbersicht
Can you support application X
We can with your help ;)
Personalization & configuration
Have an application that shouldn't be generally supported but that you use?
Or some personal files you want to sync, e.g. various config files in a ~/.config/
directory or your personal ~/.gitignore?
- Create a
~/.mackupdirectory to sync an application or any file or directory
Why did you do this
Yesterday, I had a talk with Zach Zaro, complaining about the pain it is to reconfigure our Macbook each time we get a new one or install from scratch. That's a talk we have already had months ago.
I change my workstation every X months. Each time I either lose my apps' configurations, or I just waste a bunch of hours getting setup like I was on my old box. I also spend a lot of time reconfiguring the same stuff again on all my workstations (home, work).
Boring...
Some people tried to solve the problem on the application layer, like Github's Boxen, but it solves a different problem, from my point of view. I don't spend a lot of time installing or downloading stuff. I spend time configuring it.
For years, I've used a personal shell script that was copying known config files into Subversion, Git or Dropbox, and linked them into my home. But I felt a lot of us had the same problem: Making a more generic tool could help others and I could get help from others to support more apps in the tool.
So here comes Mackup, the little tool that will sync all your application configs to Dropbox (or Google Drive, or anything).
And it's GPL, of course.
What platforms are supported
- macOS
- GNU/Linux
What's up with the weird name
Mackup is just a portmanteau of Mac and Backup. It is simple, short, and easy to remember, and it corresponds with the whole idea of Mackup: the simpler â the better! (And I suck at naming stuff, but who doesn't.)
Architecture
Want to understand how Mackup works internally? Check out the Architecture Guide which includes:
- Visual architecture diagram
- Component breakdown
- Data flow diagrams
- Design decisions
- Extension points for contributors
Perfect for contributors who want to understand the codebase or users curious about how their configs are managed.
Where can I find more information
In the doc directory.
Top Related Projects
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot