diff options
Diffstat (limited to 'restic_backup.sh')
| -rwxr-xr-x | restic_backup.sh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/restic_backup.sh b/restic_backup.sh index 831d066..e5c146e 100755 --- a/restic_backup.sh +++ b/restic_backup.sh @@ -37,12 +37,15 @@ restic backup \ --exclude-file "${CONFIG_DIR}/excludes" \ --password-file "${RESTIC_PASSWORD_FILE}" \ --option rclone.timeout=20m \ + --lock-retry-after 5m \ + --lock-stale-timeout 24h \ --tag daily || { echo "Error: Restic backup failed." >&2 notify "Restic Backup ($(whoami)@$(hostname))" "Backup phase failed!" 8 exit 1 } +<<<<<<< HEAD # Prune old snapshots echo "Applying Restic retention policy and pruning old snapshots..." restic forget \ @@ -58,6 +61,33 @@ restic forget \ notify "Restic Backup ($(whoami)@$(hostname))" "Prune phase failed!" 8 exit 1 } +======= +# Prune old snapshots - only on specific hours to avoid conflicts +HOUR=$(date +%H) +# Only prune between 2-4 AM to reduce multi-device conflicts +if [ $HOUR -ge 2 ] && [ $HOUR -lt 4 ]; then + # Add random delay to stagger multiple devices + sleep $(shuf -i 0-1800 -n 1) # 0-30 minutes random delay + echo "Applying Restic retention policy and pruning old snapshots..." + restic forget \ + --repo "${RESTIC_REPOSITORY}" \ + --password-file "${RESTIC_PASSWORD_FILE}" \ + --option rclone.timeout=20m \ + --lock-retry-after 5m \ + --lock-stale-timeout 24h \ + --keep-daily 7 \ + --keep-weekly 4 \ + --keep-monthly 6 \ + --keep-yearly 6 \ + --prune || { + echo "Warning: Restic forget/prune failed (another device might be pruning)." >&2 + notify "Restic Backup ($(whoami)@$(hostname))" "Prune phase failed!" 6 + # Don't exit on prune failure - backup was successful + } +else + echo "Skipping prune - only running between 2-4 AM to avoid multi-device conflicts" +fi +>>>>>>> 606b58c (Release v1.1.0: Critical multi-device fixes for small VPS instances) echo "--- Restic Backup finished at $(date) ---" |
