Easily back up lightweight documentation of installed packages, dotfiles, and more.
Project description
shallow-backup
shallow-backup
lets you easily create lightweight backups of installed packages, applications, fonts and dotfiles.
Contents
Featured On
shallow-backup
is featured on these lists!
What can I back up?
-
All
dotfiles
anddotfolders
.- macOS System Preferences
- Sublime Text Settings
- Atom Settings
.bashrc
.- etc.
-
Package Manager and Application
installs
.apm
brew
brew cask
gem
pip
npm
macports
- Sublime Text 2 and 3 packages
- macOS
~/Applications/
directory
-
User installed
fonts
.
Installation
-
Install with
pip
$ pip install shallow-backup
$ sudo shallow-backup
-
Download the
shallow-backup
binary from Releases tab.
Usage
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.
Example Commands
$ 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/`
Use Cases
- Reduce your backup size by compressing all package manager libraries to
.txt
files. - Easily back up your dotfiles, Sublime Text settings and Atom config.
- Back up all user installed
.ttf
and.otf
fonts fromFontbook
.
Output Structure
backup_dir/ ├── dotfiles │ ├── .bashrc │ ├── .pypirc │ ├── ... │ ├── .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 └── installs ├── apm_list.txt ├── brew-cask_list.txt ├── brew_list.txt ├── gem_list.txt ├── installed_apps_list.txt ├── macports_list.txt ├── npm_list.txt └── pip_list.txt 5 directories, 214 files
Inspiration
I back up system images of my MacBook Pro to an external SSD multiple times every 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 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 could now safely cut down my backup size by almost 10GB
by replacing my pip
, brew
, brew cask
and npm
install libraries with simple text files, which cuts 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.)
What's Next?
- Automatic restic backup.
- MacOS GUI.
How to Contribute
- Clone repo and create a new branch:
$ git checkout https://github.com/alichtman/shallow-backup -b name_for_new_branch
. - Make changes and test
- Submit Pull Request with comprehensive description of changes
Project details
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size shallow_backup-1.0-py2.py3-none-any.whl (8.7 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View hashes |
Filename, size shallow-backup-1.0.tar.gz (10.2 kB) | File type Source | Python version None | Upload date | Hashes View hashes |
Hashes for shallow_backup-1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9c877f70468b7c166ae00530c606b6e0c947c1213b6d9d0f1d173c1776156a8 |
|
MD5 | 201036f9265e713d8c374f0398a488ca |
|
BLAKE2-256 | d65090bfd7b8962c4b27f003a5ebd3f3298e2127f2633260a949430312f97563 |