2014-12-02 04:49:25 +01:00
|
|
|
title: Atticmatic
|
|
|
|
|
2014-11-27 18:29:31 +01:00
|
|
|
## Overview
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2015-07-19 03:35:29 +02:00
|
|
|
atticmatic is a simple Python wrapper script for the
|
|
|
|
[Attic](https://attic-backup.org/) and
|
|
|
|
[Borg](https://borgbackup.github.io/borgbackup/) 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:
|
|
|
|
|
2016-01-20 13:11:15 +01:00
|
|
|
```INI
|
|
|
|
[location]
|
|
|
|
# Space-separated list of source directories to backup.
|
2016-02-13 21:05:34 +01:00
|
|
|
# Globs are expanded.
|
|
|
|
source_directories: /home /etc /var/log/syslog*
|
2016-01-20 13:11:15 +01:00
|
|
|
|
|
|
|
# Path to local or remote backup repository.
|
|
|
|
repository: user@backupserver:sourcehostname.attic
|
|
|
|
|
|
|
|
[retention]
|
|
|
|
# Retention policy for how many backups to keep in each category.
|
|
|
|
keep_daily: 7
|
|
|
|
keep_weekly: 4
|
|
|
|
keep_monthly: 6
|
|
|
|
|
|
|
|
[consistency]
|
|
|
|
# Consistency checks to run, or "disabled" to prevent checks.
|
|
|
|
checks: repository archives
|
|
|
|
```
|
2015-05-11 07:00:31 +02:00
|
|
|
|
2014-11-26 01:01:59 +01:00
|
|
|
Additionally, exclude patterns can be specified in a separate excludes config
|
|
|
|
file, one pattern per line.
|
|
|
|
|
2014-12-02 05:22:49 +01:00
|
|
|
atticmatic is hosted at <https://torsion.org/atticmatic> with [source code
|
|
|
|
available](https://torsion.org/hg/atticmatic). It's also mirrored on
|
2014-12-02 04:49:25 +01:00
|
|
|
[GitHub](https://github.com/witten/atticmatic) and
|
|
|
|
[BitBucket](https://bitbucket.org/dhelfman/atticmatic) for convenience.
|
2014-11-19 03:32:16 +01:00
|
|
|
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2014-11-27 18:29:31 +01:00
|
|
|
## Setup
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2015-07-19 03:35:29 +02:00
|
|
|
To get up and running, follow the [Attic Quick
|
|
|
|
Start](https://attic-backup.org/quickstart.html) or the [Borg Quick
|
2016-04-06 14:54:06 +02:00
|
|
|
Start](https://borgbackup.readthedocs.org/en/latest/quickstart.html) to create a
|
2015-03-15 18:44:18 +01:00
|
|
|
repository on a local or remote host. Note that if you plan to run atticmatic
|
|
|
|
on a schedule with cron, and you encrypt your attic repository with a
|
2015-09-03 07:48:07 +02:00
|
|
|
passphrase instead of a key file, you'll need to set the atticmatic
|
|
|
|
`encryption_passphrase` configuration variable. See the repository encryption
|
|
|
|
section of the Quick Start for more info.
|
2015-03-15 18:44:18 +01:00
|
|
|
|
|
|
|
If the repository is on a remote host, make sure that your local root user has
|
|
|
|
key-based ssh access to the desired user account on the remote host.
|
|
|
|
|
2014-12-02 04:49:25 +01:00
|
|
|
To install atticmatic, run the following command to download and install it:
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2015-08-09 19:59:27 +02:00
|
|
|
sudo pip install --upgrade atticmatic
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2015-07-19 03:35:29 +02:00
|
|
|
If you are using Attic, copy the following configuration files:
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2014-11-26 13:04:14 +01:00
|
|
|
sudo cp sample/atticmatic.cron /etc/cron.d/atticmatic
|
2014-11-27 05:15:21 +01:00
|
|
|
sudo mkdir /etc/atticmatic/
|
2014-10-31 06:34:03 +01:00
|
|
|
sudo cp sample/config sample/excludes /etc/atticmatic/
|
|
|
|
|
2015-07-19 03:35:29 +02:00
|
|
|
If you are using Borg, copy the files like this instead:
|
|
|
|
|
2015-07-19 03:44:11 +02:00
|
|
|
sudo cp sample/borgmatic.cron /etc/cron.d/borgmatic
|
2015-07-19 03:35:29 +02:00
|
|
|
sudo mkdir /etc/borgmatic/
|
|
|
|
sudo cp sample/config sample/excludes /etc/borgmatic/
|
|
|
|
|
|
|
|
Lastly, modify the /etc files with your desired configuration.
|
2014-10-31 06:34:03 +01:00
|
|
|
|
|
|
|
|
2014-11-27 18:29:31 +01:00
|
|
|
## Usage
|
2014-10-31 06:34:03 +01:00
|
|
|
|
|
|
|
You can run atticmatic and start a backup simply by invoking it without
|
|
|
|
arguments:
|
|
|
|
|
|
|
|
atticmatic
|
|
|
|
|
2015-07-19 03:35:29 +02:00
|
|
|
Or, if you're using Borg, use this command instead to make use of the Borg
|
|
|
|
backend:
|
|
|
|
|
|
|
|
borgmatic
|
|
|
|
|
2015-02-14 18:23:40 +01:00
|
|
|
This will also prune any old backups as per the configured retention policy,
|
|
|
|
and check backups for consistency problems due to things like file damage.
|
|
|
|
|
2014-11-26 01:01:59 +01:00
|
|
|
By default, the backup will proceed silently except in the case of errors. But
|
|
|
|
if you'd like to to get additional information about the progress of the
|
2015-07-18 06:58:50 +02:00
|
|
|
backup as it proceeds, use the verbosity option:
|
2014-10-31 06:34:03 +01:00
|
|
|
|
2015-07-18 06:58:50 +02:00
|
|
|
atticmattic --verbosity 1
|
|
|
|
|
|
|
|
Or, for even more progress spew:
|
|
|
|
|
|
|
|
atticmattic --verbosity 2
|
2014-10-31 06:34:03 +01:00
|
|
|
|
|
|
|
If you'd like to see the available command-line arguments, view the help:
|
|
|
|
|
|
|
|
atticmattic --help
|
2014-11-18 03:35:47 +01:00
|
|
|
|
|
|
|
|
2014-11-27 18:29:31 +01:00
|
|
|
## Running tests
|
2014-11-18 06:57:44 +01:00
|
|
|
|
2015-03-15 18:14:30 +01:00
|
|
|
First install tox, which is used for setting up testing environments:
|
2014-11-18 06:57:44 +01:00
|
|
|
|
2015-03-15 18:14:30 +01:00
|
|
|
pip install tox
|
2014-11-18 06:57:44 +01:00
|
|
|
|
2015-03-15 18:14:30 +01:00
|
|
|
Then, to actually run tests, run:
|
2014-11-18 06:57:44 +01:00
|
|
|
|
2015-03-15 18:14:30 +01:00
|
|
|
tox
|
2014-11-18 06:57:44 +01:00
|
|
|
|
|
|
|
|
2015-02-28 20:03:22 +01:00
|
|
|
## Troubleshooting
|
|
|
|
|
|
|
|
### Broken pipe with remote repository
|
|
|
|
|
|
|
|
When running atticmatic on a large remote repository, you may receive errors
|
2015-10-20 23:08:43 +02:00
|
|
|
like the following, particularly while "attic check" is validating backups for
|
2015-02-28 20:03:22 +01:00
|
|
|
consistency:
|
|
|
|
|
|
|
|
Write failed: Broken pipe
|
|
|
|
attic: Error: Connection closed by remote host
|
|
|
|
|
|
|
|
This error can be caused by an ssh timeout, which you can rectify by adding
|
|
|
|
the following to the ~/.ssh/config file on the client:
|
|
|
|
|
|
|
|
Host *
|
|
|
|
ServerAliveInterval 120
|
|
|
|
|
|
|
|
This should make the client keep the connection alive while validating
|
|
|
|
backups.
|
|
|
|
|
|
|
|
|
2015-07-22 06:29:40 +02:00
|
|
|
## Issues and feedback
|
2014-11-18 03:35:47 +01:00
|
|
|
|
2015-07-22 06:29:40 +02:00
|
|
|
Got an issue or an idea for a feature enhancement? Check out the [atticmatic
|
2015-09-03 03:45:15 +02:00
|
|
|
issue tracker](https://tree.taiga.io/project/witten-atticmatic/issues). In
|
|
|
|
order to create a new issue or comment on an issue, you'll need to [login
|
|
|
|
first](https://tree.taiga.io/login).
|
2015-07-22 06:29:40 +02:00
|
|
|
|
|
|
|
Other questions or comments? Contact <mailto:witten@torsion.org>.
|