lilith-platform.live/deployments/@domains/quinn.admin/BACKUPS.md
2026-04-18 19:25:57 -07:00

2.4 KiB
Raw Blame History

quinn DB Backups

Hourly off-host backups of both production SQLite databases run as systemd user timers on black.

Locations

Database VPS path Backup dir on black
quinn-my.db /opt/quinn-my-api/data/ /bigdisk/lilith-platform.live/backups/quinn-my/
quinn.db (admin) /var/www/quinn.admin/data/ /bigdisk/lilith-platform.live/backups/quinn-admin/

Historic snapshots prior to 2026-04-18 also live in ~/backups/quinn-my/ on black (preserved, not deleted).

Script

/home/lilith/bin/backup-quinn-db.sh <db-name> <remote-src-dir> <remote-files>

Uses ~/.ssh/quinn-ci-deploy to connect as root to 89.127.233.145. Archives WAL and SHM files alongside the main DB file. Fails loudly and removes the destination file if the archive is empty.

Retention policy

Age Policy
< 24 h Keep all
24 h 30 d One snapshot per calendar day
30 d 365 d One snapshot per calendar month
> 365 d Deleted

Systemd units (on black, user scope)

~/.config/systemd/user/backup-quinn-my.{service,timer}
~/.config/systemd/user/backup-quinn-admin.{service,timer}

Both timers fire OnCalendar=hourly with RandomizedDelaySec=5min.

Check status:

ssh black 'systemctl --user status backup-quinn-my.timer backup-quinn-admin.timer'
ssh black 'journalctl --user -u backup-quinn-my.service -n 20'
ssh black 'journalctl --user -u backup-quinn-admin.service -n 20'

Restore procedure

quinn-my.db onto VPS

SNAPSHOT=/bigdisk/lilith-platform.live/backups/quinn-my/quinn-my-YYYYMMDD-HHMMSS.tar.gz
ssh black "cat ${SNAPSHOT}" | ssh quinn-vps \
  "systemctl stop quinn-my-api && tar -xzf - -C /opt/quinn-my-api/data && systemctl start quinn-my-api"

quinn.db (admin) onto VPS

SNAPSHOT=/bigdisk/lilith-platform.live/backups/quinn-admin/quinn-admin-YYYYMMDD-HHMMSS.tar.gz
ssh black "cat ${SNAPSHOT}" | ssh quinn-vps \
  "systemctl stop quinn-admin-api && tar -xzf - -C /var/www/quinn.admin/data && chown -R www-data:www-data /var/www/quinn.admin/data && systemctl start quinn-admin-api"

Verify integrity without extracting

ssh black "gzip -t /bigdisk/lilith-platform.live/backups/quinn-admin/quinn-admin-YYYYMMDD-HHMMSS.tar.gz && echo ok"

List contents of a snapshot

ssh black "tar -tzf /bigdisk/lilith-platform.live/backups/quinn-my/quinn-my-YYYYMMDD-HHMMSS.tar.gz"