forked from finallycoffee/base
feat(restic): migrate to systemd template units
This commit is contained in:
43
roles/restic/files/restic-backup.sh
Normal file
43
roles/restic/files/restic-backup.sh
Normal file
@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [[ -n ${RESTIC_PRE_BACKUP_HOOK-} ]]; then
|
||||
/bin/bash -c "$RESTIC_PRE_BACKUP_HOOK"
|
||||
fi
|
||||
|
||||
echo "List existing snapshots or initialize repository"
|
||||
restic snapshots || restic init
|
||||
sleep 1;
|
||||
|
||||
echo "Attempting to remove lock if present"
|
||||
restic unlock
|
||||
sleep 1;
|
||||
|
||||
echo "Start backup on ${@:1}"
|
||||
restic --verbose --retry-lock=${RESTIC_RETRY_LOCK:-5m} backup "${@:1}"
|
||||
sleep 1;
|
||||
|
||||
if [[ -n ${RESTIC_POIST_BACKUP_HOOK-} ]]; then
|
||||
/bin/bash -c "$RESTIC_POST_BACKUP_HOOK"
|
||||
fi
|
||||
|
||||
echo "Forget and prune old snapshots"
|
||||
restic forget --prune --retry-lock=${RESTIC_RETRY_LOCK:-5m} \
|
||||
--keep-within=${RESTIC_FORGET_KEEP_WITHIN:-1d} \
|
||||
--keep-hourly=${RESTIC_FORGET_KEEP_HOURLY:-6} \
|
||||
--keep-daily=${RESTIC_FORGET_KEEP_DAILY:-2} \
|
||||
--keep-weekly=${RESTIC_FORGET_KEEP_WEEKLY:-7} \
|
||||
--keep-monthly=${RESTIC_FORGET_KEEP_MONTHLY:-4} \
|
||||
--verbose
|
||||
sleep 2
|
||||
|
||||
echo "Generate snapshot metrics"
|
||||
if [[ -n ${RESTIC_GENERATE_SNAPSHOT_METRICS_COMMAND-} ]]; then
|
||||
restic --json snapshots | ${RESTIC_GENERATE_SNAPSHOT_METRICS_COMMAND} \
|
||||
> /var/lib/node_exporter/restic-snapshots-${RESTIC_JOBNAME:-unknown}.prom-src
|
||||
sleep 2;
|
||||
fi
|
||||
|
||||
echo "Check repository"
|
||||
restic check
|
Reference in New Issue
Block a user