admin: backup logs via parameters.php, nextcloud secondary backup

- surface backup/cleanup cron logs + backup freshness status
- email xamxam@erg.be when SQLite backups go stale (backup watchdog)
- sync SQLite snapshots to Nextcloud WebDAV + remote-freshness watchdog
- precise retention pruning, manual sync in check recipe, and Nextcloud-sync docs
This commit is contained in:
Pontoporeia
2026-08-24 11:34:57 +02:00
parent 3e721b19f0
commit fb5e856288
12 changed files with 823 additions and 35 deletions
+23 -1
View File
@@ -359,6 +359,14 @@ deploy-backup-script:
rsync -v scripts/backup-sqlite.sh xamxam:/tmp/backup-sqlite.sh
ssh -t xamxam "sudo install -o root -g root -m 755 /tmp/backup-sqlite.sh /usr/local/bin/backup-sqlite.sh && rm -f /tmp/backup-sqlite.sh"
@echo "✅ backup-sqlite.sh installed to /usr/local/bin/"
@echo "📋 Deploying backup watchdog…"
rsync -v scripts/backup-watchdog.php xamxam:/tmp/backup-watchdog.php
ssh -t xamxam "sudo install -o root -g root -m 755 /tmp/backup-watchdog.php /usr/local/bin/backup-watchdog.php && rm -f /tmp/backup-watchdog.php"
@echo "✅ backup-watchdog.php installed to /usr/local/bin/"
@echo "📋 Deploying Nextcloud sync…"
rsync -v scripts/nextcloud-sync.php xamxam:/tmp/nextcloud-sync.php
ssh -t xamxam "sudo install -o root -g root -m 755 /tmp/nextcloud-sync.php /usr/local/bin/nextcloud-sync.php && rm -f /tmp/nextcloud-sync.php"
@echo "✅ nextcloud-sync.php installed to /usr/local/bin/"
[group('deploy')]
deploy-backup-cron:
@@ -382,8 +390,22 @@ deploy-backup: deploy-backup-script deploy-backup-cron
# One-shot: deploy backup script + install cron jobs + set up directories.
[group('deploy')]
deploy-check-backup-log:
deploy-check-backup-log sync='':
# Tail the backup log, then optionally run the Nextcloud sync manually.
# Usage: `just deploy-check-backup-log` (tail only) or `just deploy-check-backup-log 1` (tail + sync).
ssh xamxam "tail -20 /var/log/xamxam-backup-\$(date +%Y-%m-%d).log 2>/dev/null || echo '(log file empty or missing — will be created on first cron run)'"
# Accept both `1` and `sync=1` for convenience; anything non-empty other than
# the literal "sync=1" positional string is also treated as a truthy request.
@case "{{sync}}" in \
1|sync|sync=1) \
echo "===== Running manual Nextcloud sync ====="; \
ssh -t xamxam "sudo -u www-data php /usr/local/bin/nextcloud-sync.php; echo exit=\$?";; \
''|0|no) \
echo "(sync skipped — pass 1 to also run it)";; \
*) \
echo "===== Running manual Nextcloud sync ====="; \
ssh -t xamxam "sudo -u www-data php /usr/local/bin/nextcloud-sync.php; echo exit=\$?";; \
esac
[group('deploy')]
deploy-list-backups: