shallow-backup
lets you easily create lightweight backups of installed packages, applications, fonts and dotfiles.
shallow-backup
is featured on these lists!
-
dotfiles
anddotfolders
..bashrc
.bash_profile
.gitconfig
.pypirc
.shallow-backup
.ssh/
.vim/
.zshrc
-
Application Preferences
- Sublime Text
- Terminal (Coming soon!)
- VS Code (Coming soon!)
-
Installed
packages
.Atom
Packages (apm
)brew
andcask
cargo
gem
pip
npm
macports
Sublime Text
Packages~/Applications/
directory
-
User installed
fonts
.
-
Install with
pip
$ pip install shallow-backup
$ shallow-backup
-
Download the
shallow-backup
binary from Releases tab.
Usage: shallow_backup.py [OPTIONS]
Easily back up installed packages, dotfiles, and more.
Options:
-complete Back up everything.
-dotfiles Back up dotfiles.
-fonts Back up installed fonts.
-packages Back up package libraries and installed applications.
-old_path Skip setting new back up directory path.
--new_path TEXT Input a new back up directory path.
-reinstall Reinstall packages from package lists.
-delete_config Remove config file.
-v Display version and author information and exit.
-help, -h Show this message and exit.
NOTE: shallow-backup
works best when it's populating an empty directory.
$ shallow-backup # Launch interactive CLI backup process
$ shallow-backup -old_path -complete # Make complete backup using same path as in config file
$ shallow-backup -new_path new_backup_dir -fonts # Back up fonts using path: `/new_backup_dir/`
- Reduce your backup size by compressing all package manager libraries to simple
.txt
files. - Easily back up your dotfiles.
- Back up all user installed
.ttf
and.otf
fonts fromFontbook
.
backup_dir/
├── dotfiles
│ ├── .bash_profile
│ ├── .bashrc
│ ├── .gitconfig
│ ├── .pypirc
│ ├── .shallow-backup
│ ├── .ssh/
│ │ └── known_hosts
│ ├── .vim/
│ └── .zshrc
├── fonts
│ ├── AllerDisplay.ttf
│ ├── Aller_Bd.ttf
│ ├── Aller_BdIt.ttf
│ ├── Aller_It.ttf
│ ├── ...
│ ├── Ubuntu Mono derivative Powerline Bold Italic.ttf
│ ├── Ubuntu Mono derivative Powerline Bold.ttf
│ ├── Ubuntu Mono derivative Powerline Italic.ttf
│ └── Ubuntu Mono derivative Powerline.ttf
└── packages
├── apm_list.txt
├── brew-cask_list.txt
├── brew_list.txt
├── cargo_list.txt
├── gem_list.txt
├── installed_apps_list.txt
├── npm_list.txt
├── macports_list.txt
├── pip_list.txt
└── sublime3_list.txt
I back up system images of my MacBook Pro to an external SSD multiple times per week, and it always takes way too long. I wanted to speed this up, so I took a look at what was actually being backed up. I saw that my brew
, npm
, and pip
libraries took up way more memory than I imagined.
And it's totally unnecessary! All you really need to "back up" your package installs is a list of the installed packages from each package manager. If you have these lists, restoring your system package installs is easy: $ pip install -r pip_list.txt
, for example. Additionally, you have the added bonus of always installing up-to-date packages after an OS wipe and reinstall.
I cut down my backup size by almost 10GB
by replacing my pip
, brew
, brew cask
and npm
install libraries with simple text files, also cutting down the back up time significantly.
Once I'd built that functionality, I wanted to have a single backup utility for files and folders often used by developers, so I added the ability to backup dotfiles
and fonts
. (Note: Because just having a list of installed fonts or a list of dotfiles that exist isn't very useful, shallow-backup
creates copies of all dotfiles and user installed fonts.)
- GUI.
- Option to back up specific paths.
- Clone repo and create a new branch:
$ git checkout https://github.com/alichtman/shallow-backup -b name_for_new_branch
. - Make changes and test
- Format all Python code with autopep8.
- Open Pull Request with comprehensive description of changes