1
0
Fork 0
mirror of https://github.com/roles-ansible/ansible_role_restic_archiver.git synced 2024-08-16 10:09:49 +02:00
ansible_role_restic_archiver/templates/restic_forget_snapshots.j2

97 lines
3.3 KiB
Text
Raw Normal View History

2020-05-01 10:56:07 +02:00
#!/usr/bin/env bash
# {{ ansible_managed }}
# This file is to cleanup your backup archive and move some snapshots to a external storage.
2019-09-11 11:29:36 +02:00
set -euxo pipefail
2020-12-09 17:26:16 +01:00
{% for repo in restic_archiver__repos %}
{#
2020-12-09 17:26:16 +01:00
define macro:
how fast should we delete snapshots?
Variables are defined via defaults!
2019-09-11 11:29:36 +02:00
#}
2020-12-09 17:26:16 +01:00
{% macro retention_pattern(repo) -%}
{% if repo.keep_last is defined and repo.keep_last != None -%}
--keep-last {{ repo.keep_last }}
{%- else -%}
--keep-last {{ restic_archiver__keep }}
{%- endif %} \
{% if repo.keep_hourly is defined and repo.keep_hourly != None -%}
--keep-hourly {{ repo.keep_hourly }}
{%- else -%}
--keep-hourly {{ restic_archiver__keep_hourly }}
{%- endif %} \
{% if repo.keep_daily is defined and repo.keep_daily != None -%}
--keep-daily {{ repo.keep_daily }}
{%- else -%}
--keep-daily {{ restic_archiver__keep_daily }}
{%- endif %} \
{% if repo.keep_weekly is defined and repo.keep_weekly != None -%}
--keep-weekly {{ repo.keep_weekly }}
{%- else -%}
--keep-weekly {{ restic_archiver__keep_weekly }}
{%- endif %} \
{% if repo.keep_monthly is defined and repo.keep_monthly != None -%}
--keep-monthly {{ repo.keep_monthly }}
{%- else -%}
--keep-monthly {{ restic_archiver__keep_monthly }}
{%- endif %} \
{% if repo.keep_yearly is defined and repo.keep_yearly != None -%}
--keep-yearly {{ repo.keep_yearly }}
{%- else -%}
--keep-yearly {{ restic_archiver__keep_yearly }}
{%- endif -%}
{% if repo.keep_within is defined and repo.keep_within != None %} \
--keep-within {{ repo.keep_within }} {% endif -%}
2020-12-10 19:44:40 +01:00
{%- if repo.prune|default(false) %} \
--prune {% endif %}
{%- endmacro %}
2020-12-09 17:26:16 +01:00
# Settings for Server {{ repo['name'] | string }}
export RESTIC_REPOSITORY="{{ repo['location'] }}"
2020-12-10 19:44:40 +01:00
export RESTIC_PASSWORD='{{ repo['password'] | regex_replace('\'', '\'\\\'\'') }}'
2020-12-09 17:26:16 +01:00
BACKUP_NAME="{{ repo.name }}"
2020-12-14 10:26:29 +01:00
restic forget {{ retention_pattern(repo) }}
2020-12-09 17:26:16 +01:00
2020-12-14 10:26:29 +01:00
restic check
2020-12-10 19:44:40 +01:00
{% if repo.archive|default(false) %}
# ARCHIVE Settings for Server "{{ repo['name'] | string }}"
export RESTIC_REPOSITORY="{{ repo['archive_location'] }}"
export RESTIC_PASSWORD='{{ repo['archive_password'] | regex_replace('\'', '\'\\\'\'') }}'
export RESTIC_REPOSITORY2="{{ repo['location'] }}"
export RESTIC_PASSWORD2='{{ repo['password'] | regex_replace('\'', '\'\\\'\'') }}'
BACKUP_NAME="{{ repo.name }}_archive"
# init repo if it does not exist
if ([ -z "$(restic cat config)" ]) 2>/dev/null; then
restic init --copy-chunker-params
fi
# ARCHIVE Settings for Server "{{ repo['name'] | string }}"
export RESTIC_REPOSITORY2="{{ repo['archive_location'] }}"
export RESTIC_PASSWORD2='{{ repo['archive_password'] | regex_replace('\'', '\'\\\'\'') }}'
export RESTIC_REPOSITORY="{{ repo['location'] }}"
export RESTIC_PASSWORD='{{ repo['password'] | regex_replace('\'', '\'\\\'\'') }}'
# transfer snapshots to archive
restic copy
2020-12-14 10:26:29 +01:00
{% if repo.archive_cleanup %}
2020-12-10 19:44:40 +01:00
2020-12-14 10:26:29 +01:00
# ARCHIVE CLEANUP Settings for Server "{{ repo['name'] | string }}"
export RESTIC_REPOSITORY="{{ repo['archive_location'] }}"
export RESTIC_PASSWORD='{{ repo['archive_password'] | regex_replace('\'', '\'\\\'\'') }}'
BACKUP_NAME="{{ repo.name }}_archive"
2020-12-10 19:44:40 +01:00
2020-12-14 10:26:29 +01:00
restic forget {{ retention_pattern(repo) }}
2020-12-10 19:44:40 +01:00
{% endif %}
2020-12-14 10:26:29 +01:00
restic check
2020-12-10 19:44:40 +01:00
{% endif %}
2020-12-09 17:26:16 +01:00
{% endfor %}
2020-12-10 19:44:40 +01:00