Files
dashboard/scripts/update-local-db-from-server.sh
Alberto-Audrix 32a36cceff
CI / lint-and-test (push) Canceled after 0s
first commit
2026-07-28 08:55:05 +07:00

40 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# One command to refresh your LOCAL Docker Postgres from the server:
# runs a read-only pg_dump on the server, downloads it, resets the local volume, restores.
#
# Prerequisite once on your Mac:
# cp docker-compose.override.local.example docker-compose.override.yml
#
# Usage (set paths to match your server):
# REMOTE_USER=nvidia-admin \
# REMOTE_HOST=103.215.13.55 \
# REMOTE_PROJECT_DIR=/home/nvidia-admin/path/to/dashboard-solusi-ai-peternakan-ayam \
# ./scripts/update-local-db-from-server.sh
#
# Does not modify production data. ./scripts/fetch-prod-db.sh and
# ./scripts/restore-postgres-local.sh remain available if you want only one step.
set -euo pipefail
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
PROJECT_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
# 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}"
export REMOTE_USER REMOTE_HOST REMOTE_PROJECT_DIR
"$SCRIPT_DIR/fetch-prod-db.sh"
LATEST=$(ls -t "$PROJECT_ROOT"/backups/dashboard_db-*.sql.gz 2>/dev/null | head -1)
if [ -z "$LATEST" ] || [ ! -f "$LATEST" ]; then
echo "No local backup found after fetch."
exit 1
fi
"$SCRIPT_DIR/restore-postgres-local.sh" --reset "$LATEST"
echo "Local database is now a copy of the latest server backup."