diff options
| author | Sam Scholten | 2025-10-22 14:12:20 +1000 |
|---|---|---|
| committer | Sam Scholten | 2025-10-22 15:32:14 +1000 |
| commit | eded676575e6ef6150235b71d34ec4612f1a7bfb (patch) | |
| tree | 3a82e1b91d3d6f09ec906d02c8367297a0751279 /restic_backup.sh | |
| parent | 271b8d82b129b0818cf767e7c8245976f6422b50 (diff) | |
| download | drestic-2fb72807b129d27cfc926795e1cf00af6f611339.tar.gz drestic-2fb72807b129d27cfc926795e1cf00af6f611339.zip | |
- Fix memory swap configuration (allow 1G swap)
- Add prune coordination (2-4 AM window with jitter)
- Add lock retry settings for robustness
- Increase rclone bandwidth to 2M
- Memory limits increased to 512M
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) ---" |
