A Git-integrated backup tool for macOS and Linux developers to manage dotfiles, packages, fonts, and app configs.
shallow-backup is a Python-based command-line tool that creates lightweight, structured backups of a developer's environment. It backs up dotfiles, installed packages, fonts, and application configurations, and integrates with Git for version control and remote synchronization. It solves the problem of managing and replicating development setups across multiple machines.
Developers on macOS and Linux who want to version-control their dotfiles, package lists, and app configs, and easily restore or sync environments.
It offers a safe, scriptable, and Git-integrated approach to environment backups with conditional logic, avoiding symlinks and supporting backups from any system path.
Git-integrated backup tool for macOS and Linux devs.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Backs up dotfiles from their actual system locations and supports conditional logic using bash expressions, allowing environment-specific backups as shown in the Configuration section.
Automatically initializes Git repositories in backup directories and supports submodules, enabling easy version control and remote synchronization, detailed in the Git Integration and Recipes sections.
Exports installed packages from various managers like brew, pip, npm, and cargo, compressing them into lists for efficient backup, as listed in the 'What can I back up?' section.
Prioritizes user safety by avoiding destructive operations and providing fine-grained control over backup and reinstall processes, emphasized in the Philosophy and warnings about config file permissions.
The config file allows bash expression execution, posing a code execution risk if write permissions are compromised, with explicit warnings in the Conditional Backup section about untrusted users.
Primarily targets macOS and Linux, with no built-in support for Windows package managers or system configurations, limiting cross-platform use despite claims of cross-platform sync.
Synchronizing across computers requires manual handling of Git merge conflicts, as described in the Recipes section, which can be tedious and error-prone for non-Git experts.