68 lines
1.8 KiB
Bash
Executable File
68 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Export local project SQLite DB (+ uploads) for backup / Docker import
|
|
# Usage:
|
|
# ./scripts/db-export.sh
|
|
# ./scripts/db-export.sh ./backups/my-backup
|
|
#
|
|
# Sources (local):
|
|
# server/prisma/dev.db (+ -wal / -shm if present)
|
|
# server/uploads/
|
|
#
|
|
# Restore into Docker with:
|
|
# ./scripts/db-import.sh ./backups/...
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
LOCAL_DB="${LOCAL_DB:-$ROOT/server/prisma/dev.db}"
|
|
LOCAL_UPLOADS="${LOCAL_UPLOADS:-$ROOT/server/uploads}"
|
|
STAMP="$(date +%Y%m%d-%H%M%S)"
|
|
OUT="${1:-$ROOT/backups/casegambling-$STAMP}"
|
|
|
|
if [[ ! -f "$LOCAL_DB" ]]; then
|
|
echo "Error: local database not found: $LOCAL_DB" >&2
|
|
echo "Tip: run the app once or set LOCAL_DB=/path/to/dev.db" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$OUT"
|
|
|
|
echo "==> Exporting local database → $OUT/prod.db"
|
|
echo " source: $LOCAL_DB"
|
|
cp -f "$LOCAL_DB" "$OUT/prod.db"
|
|
# keep a copy under original name too (import accepts both)
|
|
cp -f "$LOCAL_DB" "$OUT/dev.db"
|
|
|
|
if [[ -f "${LOCAL_DB}-wal" ]]; then
|
|
cp -f "${LOCAL_DB}-wal" "$OUT/prod.db-wal"
|
|
cp -f "${LOCAL_DB}-wal" "$OUT/dev.db-wal"
|
|
fi
|
|
if [[ -f "${LOCAL_DB}-shm" ]]; then
|
|
cp -f "${LOCAL_DB}-shm" "$OUT/prod.db-shm"
|
|
cp -f "${LOCAL_DB}-shm" "$OUT/dev.db-shm"
|
|
fi
|
|
|
|
echo "==> Exporting local uploads → $OUT/uploads"
|
|
mkdir -p "$OUT/uploads"
|
|
if [[ -d "$LOCAL_UPLOADS" ]]; then
|
|
# copy contents; ignore empty/.gitkeep-only quietly
|
|
cp -a "$LOCAL_UPLOADS"/. "$OUT/uploads/" 2>/dev/null || true
|
|
else
|
|
echo " (no uploads dir at $LOCAL_UPLOADS)"
|
|
fi
|
|
|
|
{
|
|
echo "exported_at=$STAMP"
|
|
echo "source=local"
|
|
echo "local_db=$LOCAL_DB"
|
|
echo "local_uploads=$LOCAL_UPLOADS"
|
|
echo "database=prod.db"
|
|
echo "uploads=uploads/"
|
|
} > "$OUT/manifest.txt"
|
|
|
|
TAR="$OUT.tar.gz"
|
|
tar -czf "$TAR" -C "$(dirname "$OUT")" "$(basename "$OUT")"
|
|
echo "==> Archive: $TAR"
|
|
echo "==> Done. Import to Docker: ./scripts/db-import.sh $OUT"
|