forked from finallycoffee/base
38 lines
1021 B
Bash
38 lines
1021 B
Bash
#!/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 2;
|
|
|
|
echo "Attempting to remove lock if present"
|
|
restic unlock
|
|
sleep 2
|
|
|
|
echo "Start backup on ${@:1}"
|
|
restic --verbose --retry-lock=${RESTIC_RETRY_LOCK:-5m} backup "${@:1}"
|
|
sleep 2
|
|
|
|
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"
|
|
restic --json snapshots | /opt/restic-generate-snapshot-metrics.sh \
|
|
> /var/lib/node_exporter/restic-snapshots-${RESTIC_JOBNAME:-unknown}.prom-src
|
|
sleep 2
|
|
|
|
echo "Check repository"
|
|
restic check
|