Files
Alberto-Audrix 32a36cceff
CI / lint-and-test (push) Canceled after 0s
first commit
2026-07-28 08:55:05 +07:00

44 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# Run on your Mac: creates a fresh backup on the server, then downloads it
# into ./backups/ (never writes to production data — only pg_dump read).
#
# Usage:
# REMOTE_USER=nvidia-admin \
# REMOTE_HOST=103.215.13.55 \
# REMOTE_PROJECT_DIR=/home/nvidia-admin/LABS/dashboard-solusi-ai-peternakan-ayam \
# ./scripts/fetch-prod-db.sh
#
# Then: ./scripts/restore-postgres-local.sh --reset
set -e
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
PROJECT_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
cd "$PROJECT_ROOT"
# Default values (can be overridden with environment variables)
: "${REMOTE_USER:=nvidia-admin}"
: "${REMOTE_HOST:=103.215.13.55}"
: "${REMOTE_PROJECT_DIR:=/home/nvidia-admin/LABS/dashboard-solusi-ai-peternakan-ayam}"
mkdir -p "$PROJECT_ROOT/backups"
QDIR=$(printf '%q' "$REMOTE_PROJECT_DIR")
echo "Running backup on server..."
ssh "${REMOTE_USER}@${REMOTE_HOST}" "cd ${QDIR} && ./scripts/backup-postgres.sh"
echo "Finding newest remote backup..."
REMOTE_LATEST=$(ssh "${REMOTE_USER}@${REMOTE_HOST}" "ls -t ${QDIR}/backups/dashboard_db-*.sql.gz 2>/dev/null | head -1")
if [ -z "$REMOTE_LATEST" ]; then
echo "No dashboard_db-*.sql.gz found under ${REMOTE_PROJECT_DIR}/backups on server."
exit 1
fi
LOCAL_NAME=$(basename "$REMOTE_LATEST")
echo "Downloading ${REMOTE_LATEST} -> backups/${LOCAL_NAME}"
scp "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_LATEST}" "$PROJECT_ROOT/backups/${LOCAL_NAME}"
echo "Saved: $PROJECT_ROOT/backups/${LOCAL_NAME}"
echo "Next: ./scripts/restore-postgres-local.sh --reset backups/${LOCAL_NAME}"
echo "Or next time run only: ./scripts/update-local-db-from-server.sh (same REMOTE_* env)."