Some sites use logs/ instead of log/ (e.g. webscroll.fr/logs/nginx/) -
the previous re:/log/ pattern didn't match the plural, so those files
kept showing up as modified every backup.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Offsite sync hit 17 fatal IO errors deleting stale segment files after a
large one-off prune batch (from the recent log/-exclude change), and
rclone's default behavior is to bail immediately on delete errors rather
than retry. Lower concurrency (--transfers 8->4, --checkers 16->8) to
reduce rate-limit pressure, and make retries explicit (--retries 5,
--retries-sleep 10s, --low-level-retries 20) instead of relying on
defaults.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
nginx access/error logs (and any other per-site log/ dir) change on
every request, so they showed up as modified in every single backup -
pure noise, no recovery value. Exclude any path containing a log/
directory (re:/log/) from borg create.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
dump_db.sh no longer lives under $TARGET, so its own default dump
directory (relative to wherever the script is) would land outside the
backed-up tree. Pin DUMP_SCRIPT to /opt/backup-agent/dump_db.sh and
export DUMP_DIR explicitly so dumps still land in $TARGET/mariadb/dump
regardless of where the script itself is deployed.
Also drop the healthcheck integration (HEALTHCHECK_URL, send_healthcheck,
curl requirement) from borg-backup.sh per request - no monitoring hook
wanted for now.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>