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

12
TODO.md
View File

@@ -47,10 +47,14 @@
- [x] Create `scripts/backup-sqlite.sh` (hot backup via `sqlite3 .backup`, gzip, retention pruning)
- [x] Test locally — backup created, restores correctly
- [x] Add `just backup-snapshot` command for local ad-hoc backups
- [ ] Deploy backup script to server (`/usr/local/bin/backup-sqlite.sh`)
- [ ] Create `/var/backups/xamxam/` directory on server
- [ ] Add cron jobs (hourly 30d + daily 90d)
- [ ] Test restore from production backup
- [x] Deploy backup script to server (`/usr/local/bin/backup-sqlite.sh`)`just deploy-backup-script`
- [x] Create `/var/backups/xamxam/` directory on server — part of `just deploy-backup-cron`
- [x] Add cron jobs (hourly 30d + daily 90d)`just deploy-backup-cron`
- [x] Test restore from production backup`just test-restore <remote-gz-path>`
- [x] Manual backup trigger — `just trigger-backup`
- [x] Check backup log — `just deploy-check-backup-log`
- [x] List remote backups — `just deploy-list-backups`
- [x] One-shot deploy — `just deploy-backup` (script + cron)
### Phase 5 — Remote Sync *(for later)*
- [ ] (Deferred)