duplicity-backup/readme.md

73 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2021-01-31 21:52:50 +01:00
# Automatic service backup
This docker container will backup services on a schedule, using duplicity as an back end.
## How to configure
To configure file hosting locations you can add storage locations to the `services.conf` file. One per line, you can add duplicity connections. The syntax of these can be found in [their docs](http://duplicity.nongnu.org/vers8/duplicity.1.html).
After changing the `services.conf` file, you'll have to rebuild the container.
The script sends logs to the docker log socket (as is usual with containers).
```
docker-compose build
docker-compose up -d
docker-compose logs -f
```
## How to use
This docker container assumes that you use the following directory structure:
```
some_folder/
service1/
backup.conf
service2/
backup.conf
service3/
```
By default, `some_folder` is mapped to `/services` as this is where my services reside. You can change this in the `docker-compose.yml` file.
If you put a `backup.conf` file into a service's directory it will get backed up. If you omit this file, the service will be skipped.
The contents of the backup file are a duplicity include list. You can find more documentation about them at [their docs](http://duplicity.nongnu.org/vers8/duplicity.1.html#sect9)
You can find an example file with some comments at `backup.conf.example`.
### Backup file syntax
Lines starting with `##` are comments.
Lines starting with `#` are interpreted as variable assignments. There are three variables used to control backup behaviour.
```
## These are also the default values
# RETAIN=1M
# INCREMENT=1W
# INTERVAL=1H
```
`RETAIN` specifies how long backups should be kept around.
`INCREMENT` specifies how long incremental backups are made before creating a full backup again. This will make a full backup every week.
`INTERVAL` specifies how long between backups.
The `RETAIN` and `INCREMENT` variables are directly fed into duplicity and use their syntax. The `INTERVAL` variable is read by the container, and has the following options:
```
1M for once each month
1W for once each week
1D for once each day
1H for once each hour
2H for once each two hours
6H for once each six hours
12H for twice each day
```
Values must be whole integers, and the minimal value possible is `1H`.