#!/bin/bash # ------------------------------------------------------- # pull-live-db.sh — Live-DB auf lokale DDEV-Instanz ziehen # # ACHTUNG: Nur Live → Local. Niemals umgekehrt! # Dieser Dump wird NICHT ins Git eingecheckt. # ------------------------------------------------------- set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR/.." # .env.local laden if [ ! -f ".env.local" ]; then echo "❌ .env.local nicht gefunden. Bitte .env.example kopieren und ausfüllen." exit 1 fi source .env.local # Pflichtfelder prüfen if [ -z "$LIVE_SSH_HOST" ] || [ -z "$LIVE_SSH_USER" ] || [ -z "$LIVE_DB_NAME" ]; then echo "❌ Bitte LIVE_SSH_HOST, LIVE_SSH_USER und LIVE_DB_NAME in .env.local setzen." exit 1 fi TEMP_DUMP="/tmp/live-dump-$(date +%Y%m%d-%H%M%S).sql.gz" LOCAL_DUMP="db/live-dump.sql" echo "🔌 Verbinde mit ${LIVE_SSH_USER}@${LIVE_SSH_HOST}:${LIVE_SSH_PORT}..." echo "🗄️ Exportiere Live-Datenbank '${LIVE_DB_NAME}'..." # DB auf dem Server dumpen und direkt runterladen ssh -p "${LIVE_SSH_PORT}" "${LIVE_SSH_USER}@${LIVE_SSH_HOST}" \ "mysqldump -u${LIVE_DB_USER} -p${LIVE_DB_PASS} -h${LIVE_DB_HOST} ${LIVE_DB_NAME} | gzip" \ > "${TEMP_DUMP}" echo "📥 Dump heruntergeladen. Importiere in DDEV..." gunzip < "${TEMP_DUMP}" > "${LOCAL_DUMP}.tmp" ddev import-db --file="${LOCAL_DUMP}.tmp" mv "${LOCAL_DUMP}.tmp" "${LOCAL_DUMP}" rm -f "${TEMP_DUMP}" echo "" echo "✅ Live-DB erfolgreich lokal importiert." echo "📁 Lokaler Dump gespeichert unter: ${LOCAL_DUMP} (nicht eingecheckt)" echo "" # Optional: Files synchronisieren if [ ! -z "$LIVE_FILES_PATH" ]; then read -p "📂 Auch files/ synchronisieren? (j/N): " sync_files if [ "$sync_files" = "j" ] || [ "$sync_files" = "J" ]; then echo "🔄 Synchronisiere files/..." rsync -avz --progress \ -e "ssh -p ${LIVE_SSH_PORT}" \ "${LIVE_SSH_USER}@${LIVE_SSH_HOST}:${LIVE_FILES_PATH}/" \ "./public/files/" echo "✅ Files synchronisiert." fi fi