38 lines
940 B
Bash
38 lines
940 B
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Source environment vars (crond runs in a minimal env)
|
|
if [ -f /etc/restic-backup.env ]; then
|
|
set -a
|
|
. /etc/restic-backup.env
|
|
set +a
|
|
fi
|
|
|
|
echo "==> Backup started at $(date -Iseconds)"
|
|
|
|
# Run pre-backup hook
|
|
if [ -x /hooks/pre-backup.sh ]; then
|
|
echo "==> Running pre-backup hook"
|
|
/hooks/pre-backup.sh
|
|
fi
|
|
|
|
# Run restic backup
|
|
echo "==> Running restic backup: $BACKUP_SOURCE"
|
|
restic backup $BACKUP_SOURCE
|
|
|
|
# Apply retention policy
|
|
echo "==> Applying retention policy: daily=$KEEP_DAILY weekly=$KEEP_WEEKLY monthly=$KEEP_MONTHLY yearly=$KEEP_YEARLY"
|
|
restic forget --prune \
|
|
--keep-daily="$KEEP_DAILY" \
|
|
--keep-weekly="$KEEP_WEEKLY" \
|
|
--keep-monthly="$KEEP_MONTHLY" \
|
|
--keep-yearly="$KEEP_YEARLY"
|
|
|
|
# Run post-backup hook
|
|
if [ -x /hooks/post-backup.sh ]; then
|
|
echo "==> Running post-backup hook"
|
|
/hooks/post-backup.sh
|
|
fi
|
|
|
|
echo "==> Backup finished at $(date -Iseconds)"
|