summaryrefslogtreecommitdiff
path: root/restic_backup.sh
diff options
context:
space:
mode:
authorSam Scholten2025-10-22 14:12:20 +1000
committerSam Scholten2025-10-22 15:32:14 +1000
commiteded676575e6ef6150235b71d34ec4612f1a7bfb (patch)
tree3a82e1b91d3d6f09ec906d02c8367297a0751279 /restic_backup.sh
parent271b8d82b129b0818cf767e7c8245976f6422b50 (diff)
downloaddrestic-2fb72807b129d27cfc926795e1cf00af6f611339.tar.gz
drestic-2fb72807b129d27cfc926795e1cf00af6f611339.zip
Release v1.1.0: Critical multi-device fixes for small VPS instancesv1.1.0v1.1
- 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-xrestic_backup.sh30
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) ---"