Files
Inventory/scripts/pull-prod-db.sh
r-dev 85c7c97dc3
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
feat(infra) : add pull-prod-db script and make target
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 11:22:34 +02:00

52 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# ============================================================
# pull-prod-db.sh — Importe la BDD inventory_prod de prod en local
# ============================================================
#
# Usage : ./scripts/pull-prod-db.sh [SSH_HOST]
#
# SSH_HOST : alias ou adresse du serveur prod (default: prod)
#
# Prérequis :
# - Accès SSH au serveur de prod
# - Docker en cours sur la prod (conteneur "postgres", user "admin")
# - Docker compose Inventory en cours en local (make start)
SSH_HOST="${1:-matt@prod.malio-dev.fr}"
PROD_CONTAINER="postgres"
PROD_DB="inventory_prod"
PROD_USER="admin"
LOCAL_COMPOSE="docker compose --env-file infra/dev/.env.docker"
LOCAL_DB_SERVICE="db"
LOCAL_DB="inventory"
LOCAL_USER="root"
DUMP_FILE="/tmp/inventory_prod_dump.sql"
echo "==> Dump de ${PROD_DB} depuis ${SSH_HOST}..."
ssh "${SSH_HOST}" "docker exec ${PROD_CONTAINER} pg_dump -U ${PROD_USER} -d ${PROD_DB} \
--no-owner --no-privileges --clean --if-exists" > "${DUMP_FILE}"
DUMP_SIZE=$(du -h "${DUMP_FILE}" | cut -f1)
echo "==> Dump recu : ${DUMP_FILE} (${DUMP_SIZE})"
echo "==> Reset de la BDD locale (${LOCAL_DB})..."
${LOCAL_COMPOSE} exec -T ${LOCAL_DB_SERVICE} psql -U ${LOCAL_USER} -d postgres -c \
"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='${LOCAL_DB}' AND pid <> pg_backend_pid();" > /dev/null 2>&1 || true
${LOCAL_COMPOSE} exec -T ${LOCAL_DB_SERVICE} psql -U ${LOCAL_USER} -d postgres -c \
"DROP DATABASE IF EXISTS ${LOCAL_DB};"
${LOCAL_COMPOSE} exec -T ${LOCAL_DB_SERVICE} psql -U ${LOCAL_USER} -d postgres -c \
"CREATE DATABASE ${LOCAL_DB};"
echo "==> Import du dump dans la BDD locale..."
${LOCAL_COMPOSE} exec -T ${LOCAL_DB_SERVICE} psql -U ${LOCAL_USER} -d ${LOCAL_DB} < "${DUMP_FILE}"
echo "==> Nettoyage..."
rm -f "${DUMP_FILE}"
echo ""
echo "Done! BDD locale '${LOCAL_DB}' synchronisee avec '${PROD_DB}' de prod."