MCPcopy
hub / github.com/lra/mackup

github.com/lra/mackup @0.11.1 sqlite

repository ↗ · DeepWiki ↗ · release 0.11.1 ↗
180 symbols 553 edges 18 files 127 documented · 71%
README

Mackup™

Tests PyPI version Python Versions Ruff mypy License

Backup and keep your application settings in sync.

Table of contents

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

backup, restore, link install, link uninstall and link operate on all of your configured applications by default. To limit a command to a single application, add its name (the identifier shown by mackup list), e.g. mackup backup vim. Naming an application overrides the [applications_to_sync] / [applications_to_ignore] settings in your .mackup.cfg, so you can act on any supported app without editing your config.

mackup backup [application]

Back up your application files. Copy your local config files into the Mackup folder. Name an application to back up only that one, e.g. mackup backup vim.

mackup restore [application]

Restore your application settings on a newly installed workstation. Copy config files from the Mackup folder to your home folder. Name an application to restore only that one, e.g. mackup restore emacs.

mackup link install [application]

Move your local config files into the Mackup folder, and link them to their original place. Name an application to install only that one.

$${\color{red}warning}$$ the link strategy doesn't work correctly on macOS

mackup link [application]

On another workstation, links local config files from the Mackup folder. Name an application to link only that one.

mackup link uninstall [application]

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. Name an application (e.g. mackup link uninstall git) to unlink only that one; scoping to an application skips the global uninstall confirmation.

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 backup
  • mackup 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 install
  • mackup link
  • mackup link uninstall

mackup link install

If you have Dropbox, these things happen when you launch mackup link install:

  1. cp ~/.gitconfig ~/Dropbox/Mackup/.gitconfig
  2. rm ~/.gitconfig
  3. ln -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:

  1. 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.

To revert a single application instead, name it, e.g. mackup link uninstall git. Scoping the command to an application unlinks only that app — the rest of your setup and the Mackup config itself are left in place, and the global uninstall confirmation is skipped.

Supported Storages

See the README file in the doc directory for more info.

Unsupported Storages

Supported Applications

Core symbols most depended-on inside this repo

main
called by 23
src/mackup/main.py
copy_files_to_mackup_folder
called by 10
src/mackup/application.py
get_app_names
called by 8
src/mackup/appsdb.py
_run_action
called by 7
src/mackup/main.py
error
called by 6
src/mackup/utils.py
get_config_files
called by 6
src/mackup/appsdb.py
get_filepaths
called by 5
src/mackup/application.py
copy_files_from_mackup_folder
called by 5
src/mackup/application.py

Shape

Method 135
Function 29
Class 16

Languages

Python100%

Modules by API surface

tests/test_utils.py22 symbols
tests/test_config.py20 symbols
tests/test_cli.py20 symbols
tests/test_application.py20 symbols
src/mackup/config.py17 symbols
src/mackup/main.py15 symbols
src/mackup/utils.py13 symbols
tests/test_appsdb_xdg.py10 symbols
src/mackup/application.py8 symbols
tests/test_config_file_option.py7 symbols
tests/test_backup_after_link_install.py7 symbols
src/mackup/mackup.py7 symbols

Dependencies from manifests, versioned

docopt-ng0.9.0 · 1×

For agents

$ claude mcp add mackup \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact