-
How-to guides
- 📥 Set up backups
- 🔀 Make per-application backups
- 🔒 Provide your passwords
- ☁️ Make backups redundant
- 📏 Deal with very large backups
- 🔎 Inspect your backups
- 🚨 Monitor your backups
- 📤 Extract a backup
- 🗄️ Backup your databases
- 📸 Snapshot your filesystems
- 🧹 Add preparation and cleanup steps
- 💾 Backup to a removable drive/server
- 🔧 Run arbitrary Borg commands
- 💥 Customize warnings/errors
- 📦 Upgrade borgmatic/Borg
- 🏗️ Develop on borgmatic
- Reference guides
getting oriented
If case you're interested in developing on borgmatic, here's an abridged primer on how its Python source code is organized to help you get started. Starting at the top level, we have:
- borgmatic: The main borgmatic source module. Most of the code is here. Within that:
- actions: borgmatic-specific logic for running each action (create, list, check, etc.).
- borg: Lower-level code that's responsible for interacting with Borg to run each action.
- commands: Looking to add a new flag or action? Start here. This contains borgmatic's entry point, argument parsing, and shell completion.
- config: Code responsible for loading, normalizing, and validating borgmatic's configuration. Interested in adding a new configuration option? Check out
schema.yaml
here. - hooks: Looking to add a new database, filesystem, or monitoring integration? Start here.
- data_source: Database and filesystem hooks—anything that produces data or files to go into a backup archive.
- monitoring: Monitoring hooks—integrations with third-party or self-hosted monitoring services.
- docs: How-to and reference documentation, including the document you're reading now.
- sample: Example configurations for cron and systemd.
- scripts: Dev-facing scripts for things like building documentation and running end-to-end tests.
- tests: Automated tests organized by: end-to-end, integration, and unit.
So, broadly speaking, the control flow goes: commands
→ config
followed by commands
→ actions
→ borg
and hooks
.
Improve this documentation
Have an idea on how to make this documentation even better? Use our issue tracker to send your feedback!