diff options
Diffstat (limited to 'restic_backup.sh')
| -rwxr-xr-x | restic_backup.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/restic_backup.sh b/restic_backup.sh new file mode 100755 index 0000000..2ace329 --- /dev/null +++ b/restic_backup.sh @@ -0,0 +1,61 @@ +#!/bin/bash +set -euo pipefail + +echo "--- Initializing Restic Backup Script ---" + +# Source environment variables if the file exists +# This script expects RESTIC_ENV_FILE to be set in the environment +# The environment file includes rclone throttling settings to prevent timeouts +# shellcheck source=/dev/null +if [ -f "$RESTIC_ENV_FILE" ]; then + source "$RESTIC_ENV_FILE" + echo "Environment variables loaded from $RESTIC_ENV_FILE" +else + echo "Error: RESTIC_ENV_FILE not found. Please run setup.sh first." >&2 + exit 1 +fi + +# Source common functions +# shellcheck source=/dev/null +source "$(dirname "$0")/common.sh" + +# --- Pre-warm rclone connection --- +pre_warm_connection "Restic Backup" + +# --- Exit Trap --- +# This will call notify with the script's final exit code upon termination. +trap 'notify "Restic Backup ($(whoami)@$(hostname))" "Restic backup script finished with exit code $?" $?' EXIT + +# --- Main Backup Logic --- +echo "--- Starting Restic Backup at $(date) ---" + +# Perform the Restic backup +echo "Starting Restic backup to repository: $RESTIC_REPOSITORY" +restic backup \ + --repo "${RESTIC_REPOSITORY}" \ + --files-from "${CONFIG_DIR}/paths" \ + --exclude-file "${CONFIG_DIR}/excludes" \ + --password-file "${RESTIC_PASSWORD_FILE}" \ + --tag daily || { + echo "Error: Restic backup failed." >&2 + notify "Restic Backup ($(whoami)@$(hostname))" "Backup phase failed!" 8 + exit 1 +} + +# Prune old snapshots +echo "Applying Restic retention policy and pruning old snapshots..." +restic forget \ + --repo "${RESTIC_REPOSITORY}" \ + --password-file "${RESTIC_PASSWORD_FILE}" \ + --keep-daily 7 \ + --keep-weekly 4 \ + --keep-monthly 6 \ + --keep-yearly 6 \ + --prune || { + echo "Error: Restic forget/prune failed." >&2 + notify "Restic Backup ($(whoami)@$(hostname))" "Prune phase failed!" 8 + exit 1 +} + + +echo "--- Restic Backup finished at $(date) ---" |
