Initial commit — Moon Household Budget

This commit is contained in:
Bonna
2026-06-06 14:22:57 -05:00
commit fa3c030b36
44 changed files with 10860 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
#!/bin/sh
# Snapshot the app's data to Backblaze B2 via rclone.
# - SQLite DB: a consistent .backup snapshot (safe while the app is running)
# - uploads: mirrored to B2
# rclone's B2 remote ("b2:") is configured entirely from RCLONE_CONFIG_B2_*
# env vars (set in .env / compose). Runs once; the container loops it.
set -eu
STAMP=$(date +%Y%m%d-%H%M%S)
DEST="b2:${B2_BUCKET}/moon-household-budget"
KEEP_DAYS="${BACKUP_KEEP_DAYS:-30}"
echo "[backup ${STAMP}] starting"
# 1. SQLite snapshot (only if a db file is present)
if [ -f /data/app.db ]; then
sqlite3 /data/app.db ".backup '/tmp/app-${STAMP}.db'"
rclone copyto "/tmp/app-${STAMP}.db" "${DEST}/db/app-${STAMP}.db"
rm -f "/tmp/app-${STAMP}.db"
echo "[backup ${STAMP}] db snapshot uploaded"
else
echo "[backup ${STAMP}] no /data/app.db — skipping db snapshot"
fi
# 2. Uploaded images (and anything else under /data except the live db)
if [ -d /data/uploads ]; then
rclone sync /data/uploads "${DEST}/uploads"
echo "[backup ${STAMP}] uploads synced"
fi
# 3. Prune old db snapshots
rclone delete --min-age "${KEEP_DAYS}d" "${DEST}/db" 2>/dev/null || true
echo "[backup ${STAMP}] done"