73 lines
2.2 KiB
Markdown
73 lines
2.2 KiB
Markdown
|
# 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`.
|