A wrapper script for Restic backup software that inits, creates, prunes and checks backups
Project description
Runrestic
runrestic is a simple Python wrapper script for the Restic 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.
Example config
repositories = [
"/tmp/restic-repo",
"sftp:user@host:/srv/restic-repo",
"s3:s3.amazonaws.com/bucket_name"
]
[environment]
RESTIC_PASSWORD = "CHANGEME"
[backup]
sources = [
"/home",
"/var"
]
[prune]
keep-last = 3
keep-hourly = 5
For a more comprehensive example see the example.toml or check the schema.json
Getting started
Installing runrestic and restic
To install runrestic, run the following command to download and install it:
sudo pip3 install --upgrade runrestic
You can either manually download and install Restic or you can just run runrestic
and it'll try to download it for you.
Initializing and running
Once you have restic
and runrestic
ready, you should put a config file in on of the scanned locations, namely:
- /etc/runrestic.toml
- /etc/runrestic/example.toml
- ~/.config/runrestic/example.toml
Afterwards, run
runrestic init # to initialize all the repos in `repositories`
runrestic # without actions will do: runrestic backup prune check
# or
runrestic [action]
Certain `restic` flags like `--dry-run/-n` are built into `runrestic` as well and will be passed to restic where applicable.
If, however, you need to pass along arbitrary other flags you can now add them to the end of your runrestic
call like so:
runrestic backup -- --one-file-system
Prometheus / Grafana metrics
@d-matt created a nice dashboard for Grafana here: https://grafana.com/grafana/dashboards/11064/revisions
systemd timer or cron
If you want to run runrestic automatically, say once a day, the you can configure a job runner to invoke it periodically.
systemd
If you're using systemd instead of cron to run jobs, download the sample systemd service file and the sample systemd timer file. Then, from the directory where you downloaded them:
sudo mv runrestic.service runrestic.timer /etc/systemd/system/
sudo systemctl enable runrestic.timer
sudo systemctl start runrestic.timer
cron
If you're using cron, download the sample cron file. Then, from the directory where you downloaded it:
sudo mv runrestic /etc/cron.d/runrestic
sudo chmod +x /etc/cron.d/runrestic
Changelog
- v0.5! Expect breaking changes.
- metrics output is a bit different
- see new
parallel
andretry_*
options.
Development
This project is managed with poetry
Install it if not already present:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
# or
pip install --user poetry
Installing dependencies
poetry install
Running Tests
poetry run pytest
Thanks
This project was initially based on borgmatic but has since evolved into something else.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file runrestic-0.5.7.tar.gz
.
File metadata
- Download URL: runrestic-0.5.7.tar.gz
- Upload date:
- Size: 15.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.4.0-29-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4c04fd0fc84a17ba825826007d1d7886a2f102779e8736d756e35cfa1309787 |
|
MD5 | fe20fb9aa23e497d651dc475c05053cf |
|
BLAKE2b-256 | 63cc376f40df345a95fbdd50230675cc4d61aa84dc09e056c6bf20b094c25a51 |
Provenance
File details
Details for the file runrestic-0.5.7-py3-none-any.whl
.
File metadata
- Download URL: runrestic-0.5.7-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.4.0-29-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31374e18b7fc79b163c2ade8226e486354fe41c6860ddf1955c3730ba3de6689 |
|
MD5 | 216b5cd9a225096e6306ac8af6454cd7 |
|
BLAKE2b-256 | a4685608d565c2f9da6f756a2d743b7b728bb691a7b149e9fbcea71e1fe245cd |