2018-09-02 07:45:13 +02:00
|
|
|
---
|
|
|
|
title: borgmatic
|
|
|
|
permalink: borgmatic/index.html
|
2018-09-02 07:38:17 +02:00
|
|
|
---
|
2014-11-27 18:29:31 +01:00
|
|
|
## Overview
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2018-08-30 07:44:12 +02:00
|
|
|
<img src="https://projects.torsion.org/witten/borgmatic/raw/branch/master/static/borgmatic.png" width="150px" style="float: right; padding-left: 1em;">
|
|
|
|
|
2018-08-30 07:57:32 +02:00
|
|
|
borgmatic is a simple Python wrapper script for the
|
2018-09-03 07:06:57 +02:00
|
|
|
[Borg](https://www.borgbackup.org/) backup software that initiates a backup,
|
|
|
|
prunes any old backups according to a retention policy, and validates backups
|
|
|
|
for consistency. The script supports specifying your settings in a declarative
|
|
|
|
configuration file rather than having to put them all on the command-line, and
|
|
|
|
handles common errors.
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2014-11-26 01:01:59 +01:00
|
|
|
Here's an example config file:
|
|
|
|
|
2017-07-05 03:23:59 +02:00
|
|
|
```yaml
|
|
|
|
location:
|
|
|
|
# List of source directories to backup. Globs are expanded.
|
|
|
|
source_directories:
|
|
|
|
- /home
|
|
|
|
- /etc
|
|
|
|
- /var/log/syslog*
|
|
|
|
|
2017-07-23 07:56:46 +02:00
|
|
|
# Paths to local or remote repositories.
|
|
|
|
repositories:
|
|
|
|
- user@backupserver:sourcehostname.borg
|
2017-07-05 03:23:59 +02:00
|
|
|
|
2017-07-10 20:06:28 +02:00
|
|
|
# Any paths matching these patterns are excluded from backups.
|
|
|
|
exclude_patterns:
|
|
|
|
- /home/*/.cache
|
|
|
|
|
2017-07-05 03:23:59 +02:00
|
|
|
retention:
|
|
|
|
# Retention policy for how many backups to keep in each category.
|
|
|
|
keep_daily: 7
|
|
|
|
keep_weekly: 4
|
|
|
|
keep_monthly: 6
|
|
|
|
|
|
|
|
consistency:
|
|
|
|
# List of consistency checks to run: "repository", "archives", or both.
|
|
|
|
checks:
|
|
|
|
- repository
|
|
|
|
- archives
|
2016-01-20 13:11:15 +01:00
|
|
|
```
|
2015-05-11 07:00:31 +02:00
|
|
|
|
2016-06-10 20:21:53 +02:00
|
|
|
borgmatic is hosted at <https://torsion.org/borgmatic> with [source code
|
2017-10-28 06:55:08 +02:00
|
|
|
available](https://projects.torsion.org/witten/borgmatic). It's also mirrored
|
2017-10-28 07:27:28 +02:00
|
|
|
on [GitHub](https://github.com/witten/borgmatic) for convenience.
|
2014-11-19 03:32:16 +01:00
|
|
|
|
2018-09-30 20:11:07 +02:00
|
|
|
Want to see borgmatic in action? Check out the <a
|
|
|
|
href="https://asciinema.org/a/203761" target="_blank">screencast</a>.
|
|
|
|
|
2018-09-30 06:38:38 +02:00
|
|
|
<script src="https://asciinema.org/a/203761.js" id="asciicast-203761" async></script>
|
2018-02-20 02:44:20 +01:00
|
|
|
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2019-02-04 07:20:59 +01:00
|
|
|
## How-to guides
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2019-02-04 07:20:59 +01:00
|
|
|
* [Set up backups with borgmatic](docs/how-to/set-up-backups.md) \<-- *Start here!*
|
|
|
|
* [Make per-application backups](docs/how-to/make-per-application-backups.md)
|
|
|
|
* [Deal with very large backups](docs/how-to/deal-with-very-large-backups.md)
|
|
|
|
* [Inspect your backups](docs/how-to/inspect-your-backups.md)
|
|
|
|
* [Run preparation steps before backups](docs/how-to/run-preparation-steps-before-backups.md)
|
|
|
|
* [Upgrade borgmatic](docs/how-to/upgrade.md)
|
|
|
|
* [Develop on borgmatic](docs/how-to/develop-on-borgmatic.md)
|
2016-06-10 20:53:45 +02:00
|
|
|
|
2017-07-10 20:06:28 +02:00
|
|
|
|
2018-06-17 23:55:57 +02:00
|
|
|
## Support and contributing
|
2014-11-18 06:57:44 +01:00
|
|
|
|
2018-06-17 23:55:57 +02:00
|
|
|
### Issues
|
|
|
|
|
|
|
|
You've got issues? Or an idea for a feature enhancement? We've got an [issue
|
|
|
|
tracker](https://projects.torsion.org/witten/borgmatic/issues). In order to
|
|
|
|
create a new issue or comment on an issue, you'll need to [login
|
|
|
|
first](https://projects.torsion.org/user/login). Note that you can login with
|
|
|
|
an existing GitHub account if you prefer.
|
|
|
|
|
|
|
|
Other questions or comments? Contact <mailto:witten@torsion.org>.
|
|
|
|
|
|
|
|
|
|
|
|
### Contributing
|
|
|
|
|
|
|
|
If you'd like to contribute to borgmatic development, please feel free to
|
|
|
|
submit a [Pull Request](https://projects.torsion.org/witten/borgmatic/pulls)
|
|
|
|
or open an [issue](https://projects.torsion.org/witten/borgmatic/issues) first
|
|
|
|
to discuss your idea. We also accept Pull Requests on GitHub, if that's more
|
|
|
|
your thing. In general, contributions are very welcome. We don't bite!
|
|
|
|
|
2019-02-04 07:20:59 +01:00
|
|
|
Also, please check out the [borgmatic development
|
|
|
|
how-to](docs/how-to/develop-on-borgmatic.md) for info on cloning source code,
|
|
|
|
running tests, etc.
|
2018-06-17 23:55:57 +02:00
|
|
|
|
2018-10-01 02:30:04 +02:00
|
|
|
|
2015-02-28 20:03:22 +01:00
|
|
|
## Troubleshooting
|
|
|
|
|
|
|
|
### Broken pipe with remote repository
|
|
|
|
|
2016-06-10 20:21:53 +02:00
|
|
|
When running borgmatic on a large remote repository, you may receive errors
|
|
|
|
like the following, particularly while "borg check" is validating backups for
|
2015-02-28 20:03:22 +01:00
|
|
|
consistency:
|
|
|
|
|
2017-10-28 19:45:27 +02:00
|
|
|
```text
|
2015-02-28 20:03:22 +01:00
|
|
|
Write failed: Broken pipe
|
2016-06-10 20:21:53 +02:00
|
|
|
borg: Error: Connection closed by remote host
|
2017-10-28 19:45:27 +02:00
|
|
|
```
|
2015-02-28 20:03:22 +01:00
|
|
|
|
|
|
|
This error can be caused by an ssh timeout, which you can rectify by adding
|
2018-10-06 22:23:54 +02:00
|
|
|
the following to the `~/.ssh/config` file on the client:
|
2015-02-28 20:03:22 +01:00
|
|
|
|
2017-10-28 19:45:27 +02:00
|
|
|
```text
|
2015-02-28 20:03:22 +01:00
|
|
|
Host *
|
|
|
|
ServerAliveInterval 120
|
2017-10-28 19:45:27 +02:00
|
|
|
```
|
2015-02-28 20:03:22 +01:00
|
|
|
|
|
|
|
This should make the client keep the connection alive while validating
|
|
|
|
backups.
|
|
|
|
|
|
|
|
|
2017-07-23 06:07:09 +02:00
|
|
|
### libyaml compilation errors
|
|
|
|
|
|
|
|
borgmatic depends on a Python YAML library (ruamel.yaml) that will optionally
|
|
|
|
use a C YAML library (libyaml) if present. But if it's not installed, then
|
|
|
|
when installing or upgrading borgmatic, you may see errors about compiling the
|
|
|
|
YAML library. If so, not to worry. borgmatic should install and function
|
|
|
|
correctly even without the C YAML library. And borgmatic won't be any faster
|
|
|
|
with the C library present, so you don't need to go out of your way to install
|
|
|
|
it.
|