autorestic/docs/markdown/location/hooks.md

92 lines
2.2 KiB
Markdown
Raw Normal View History

2020-05-17 12:52:30 +00:00
# Hooks
If you want to perform some commands before and/or after a backup or restore, you can use hooks.
2021-04-15 22:26:57 +00:00
They consist of a list of commands that will be executed in the same directory as the config file or in the `dir` directory if configured.
2021-05-06 13:55:32 +00:00
The following hooks groups are supported, none are required:
- `before`
- `after`
- `failure`
- `success`
2020-05-17 12:52:30 +00:00
```yml | .autorestic.yml
locations:
my-location:
from: /data
to: my-backend
hooks:
backup:
before:
- echo "One"
- echo "Two"
- echo "Three"
after:
- echo "Byte"
failure:
- echo "Something went wrong"
success:
- echo "Well done!"
restore:
dir: /var/www/html
before:
- echo "Let's restore this backup!"
after:
- echo "Finished to restore"
failure:
- echo "A problem has been encountered :("
success:
- echo "Successfully restored!"
2020-05-17 12:52:30 +00:00
```
2021-05-06 13:55:32 +00:00
## Flowchart
1. `before` hook
2. Run backup
3. `after` hook
4. - `success` hook if no errors were found
2021-10-26 13:57:47 +00:00
- `failure` hook if at least one error was encountered
2021-05-06 13:55:32 +00:00
If the `before` hook encounters errors the backup and `after` hooks will be skipped and only the `failed` hooks will run.
2021-10-26 13:57:47 +00:00
## Environment variables
All hooks are exposed to the `AUTORESTIC_LOCATION` environment variable, which contains the location name.
The `after` and `success` hooks have access to additional information with the following syntax:
```bash
AUTORESTIC_[TYPE]_[I]
AUTORESTIC_[TYPE]_[BACKEND_NAME]
```
Every type of metadata is appended with both the name of the backend associated with and the number in which the backends where executed.
### Available Metadata Types
- `SNAPSHOT_ID`
- `PARENT_SNAPSHOT_ID`
- `FILES_ADDED`
- `FILES_CHANGED`
- `FILES_UNMODIFIED`
- `DIRS_ADDED`
- `DIRS_CHANGED`
- `DIRS_UNMODIFIED`
- `ADDED_SIZE`
- `PROCESSED_FILES`
- `PROCESSED_SIZE`
- `PROCESSED_DURATION`
#### Example
Assuming you have a location `bar` that backs up to a single backend named `foo` you could expect the following env variables:
```bash
AUTORESTIC_LOCATION=bar
AUTORESTIC_FILES_ADDED_0=42
AUTORESTIC_FILES_ADDED_FOO=42
```
2020-05-17 12:52:30 +00:00
> :ToCPrevNext