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"