From 62146c5ce7d209ba9b9932b2c9b0e7103863edf7 Mon Sep 17 00:00:00 2001 From: Shawn Date: Thu, 21 May 2026 20:21:16 -0400 Subject: [PATCH] db: auto-backup before server start + daily cron - backup-db.sh: copies assets.db to /home/oplabs/backups/canteen-db/ - start.sh: runs backup automatically before every launch - Daily cron at 3am for unattended backups - Keeps last 30 backups, prunes oldest --- backup-db.sh | 22 ++++++++++++++++++++++ start.sh | 11 +++++++++++ 2 files changed, 33 insertions(+) create mode 100755 backup-db.sh diff --git a/backup-db.sh b/backup-db.sh new file mode 100755 index 0000000..d6de885 --- /dev/null +++ b/backup-db.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Auto-backup for canteen-asset-tracker database +# Runs before every server start and on a cron schedule + +set -euo pipefail + +DB_DIR="/home/oplabs/projects/canteen-asset-tracker" +BACKUP_DIR="/home/oplabs/backups/canteen-db" +TIMESTAMP=$(date +%Y%m%d-%H%M%S) + +mkdir -p "$BACKUP_DIR" + +for db in assets.db; do + if [ -f "${DB_DIR}/${db}" ]; then + cp "${DB_DIR}/${db}" "${BACKUP_DIR}/${db}-${TIMESTAMP}" + # Keep only last 30 backups + ls -t "${BACKUP_DIR}/${db}-"* 2>/dev/null | tail -n +31 | xargs rm -f 2>/dev/null || true + echo "✅ Backed up ${db} -> ${BACKUP_DIR}/${db}-${TIMESTAMP}" + else + echo "⚠️ ${db} not found, skipping" + fi +done diff --git a/start.sh b/start.sh index d0b334c..a402a59 100755 --- a/start.sh +++ b/start.sh @@ -36,6 +36,17 @@ if [ "${CANTEEN_WIPE_DB:-}" = "1" ]; then rm -f "$DB_PATH" "${DB_PATH}-shm" "${DB_PATH}-wal" fi +# ── Back up existing DB before launch ───────────────────────────────────────── +if [ -f "$DB_PATH" ]; then + BACKUP_DIR="/home/oplabs/backups/canteen-db" + mkdir -p "$BACKUP_DIR" + TIMESTAMP=$(date +%Y%m%d-%H%M%S) + cp "$DB_PATH" "${BACKUP_DIR}/assets.db-${TIMESTAMP}" + # Keep last 30 backups + ls -t "${BACKUP_DIR}/assets.db-"* 2>/dev/null | tail -n +31 | xargs rm -f 2>/dev/null || true + echo " Backup: ${BACKUP_DIR}/assets.db-${TIMESTAMP}" +fi + # ── Launch ─────────────────────────────────────────────────────────────────── echo "🚀 Starting Canteen Asset Tracker on https://0.0.0.0:${PORT}" echo " DB: $DB_PATH"