feat(backup): deploy cron-based SQLite backups to production

- Create deploy/xamxam-backup.cron with hourly (30d) and daily (90d) jobs
- Add just recipes for deploying backup infrastructure:
  - deploy-backup-script: upload backup-sqlite.sh to /usr/local/bin
  - deploy-backup-cron: install cron.d file, create /var/backups/xamxam + log
  - deploy-backup: one-shot convenience (script + cron)
  - deploy-check-backup-log: tail the backup log
  - deploy-list-backups: ls remote backup directory
  - trigger-backup: manually invoke backup on server
  - test-restore: scp, gunzip, verify a remote snapshot
- Add reminder to run deploy-backup after first deploy
- Replace 'Contenu (Markdown)' label with 'Syntax Markdown' link (cheatsheet)
This commit is contained in:
Pontoporeia
2026-05-11 03:51:13 +02:00
parent be50ac5eb0
commit 973444bdbb
6 changed files with 230 additions and 137 deletions

View File

@@ -22,7 +22,10 @@ TIMESTAMP=$(date +"%Y-%m-%dT%H-%M-%S")
BACKUP_FILE="$BACKUP_DIR/db-$TIMESTAMP.db.gz"
TMP_SNAPSHOT="/tmp/xamxam-snapshot-$$.db"
mkdir -p "$BACKUP_DIR"
mkdir -p "$BACKUP_DIR" 2>/dev/null || {
echo "ERROR: Cannot create backup directory '$BACKUP_DIR'. Run: just deploy-backup-cron" >&2
exit 1
}
# Safe hot backup using SQLite's online backup API
sqlite3 "$DB_PATH" ".backup $TMP_SNAPSHOT"