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
This commit is contained in:
Executable
+22
@@ -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
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user