44 lines
1.6 KiB
Bash
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)."
|