autorestic/docs/markdown/location/hooks.md

2.2 KiB

Hooks

If you want to perform some commands before and/or after a backup or restore, you can use hooks.

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.

The following hooks groups are supported, none are required:

  • before
  • after
  • failure
  • success
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!"

Flowchart

  1. before hook
  2. Run backup
  3. after hook
    • success hook if no errors were found
    • failure hook if at least one error was encountered

If the before hook encounters errors the backup and after hooks will be skipped and only the failed hooks will run.

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:

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:

AUTORESTIC_LOCATION=bar
AUTORESTIC_FILES_ADDED_0=42
AUTORESTIC_FILES_ADDED_FOO=42

:ToCPrevNext