No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

61 líneas
2.0 KiB

  1. #!/bin/bash
  2. # -------------------------------------------------------
  3. # pull-live-db.sh — Live-DB auf lokale DDEV-Instanz ziehen
  4. #
  5. # ACHTUNG: Nur Live → Local. Niemals umgekehrt!
  6. # Dieser Dump wird NICHT ins Git eingecheckt.
  7. # -------------------------------------------------------
  8. set -e
  9. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  10. cd "$SCRIPT_DIR/.."
  11. # .env.local laden
  12. if [ ! -f ".env.local" ]; then
  13. echo "❌ .env.local nicht gefunden. Bitte .env.example kopieren und ausfüllen."
  14. exit 1
  15. fi
  16. source .env.local
  17. # Pflichtfelder prüfen
  18. if [ -z "$LIVE_SSH_HOST" ] || [ -z "$LIVE_SSH_USER" ] || [ -z "$LIVE_DB_NAME" ]; then
  19. echo "❌ Bitte LIVE_SSH_HOST, LIVE_SSH_USER und LIVE_DB_NAME in .env.local setzen."
  20. exit 1
  21. fi
  22. TEMP_DUMP="/tmp/live-dump-$(date +%Y%m%d-%H%M%S).sql.gz"
  23. LOCAL_DUMP="db/live-dump.sql"
  24. echo "🔌 Verbinde mit ${LIVE_SSH_USER}@${LIVE_SSH_HOST}:${LIVE_SSH_PORT}..."
  25. echo "🗄️ Exportiere Live-Datenbank '${LIVE_DB_NAME}'..."
  26. # DB auf dem Server dumpen und direkt runterladen
  27. ssh -p "${LIVE_SSH_PORT}" "${LIVE_SSH_USER}@${LIVE_SSH_HOST}" \
  28. "mysqldump -u${LIVE_DB_USER} -p${LIVE_DB_PASS} -h${LIVE_DB_HOST} ${LIVE_DB_NAME} | gzip" \
  29. > "${TEMP_DUMP}"
  30. echo "📥 Dump heruntergeladen. Importiere in DDEV..."
  31. gunzip < "${TEMP_DUMP}" > "${LOCAL_DUMP}.tmp"
  32. ddev import-db --file="${LOCAL_DUMP}.tmp"
  33. mv "${LOCAL_DUMP}.tmp" "${LOCAL_DUMP}"
  34. rm -f "${TEMP_DUMP}"
  35. echo ""
  36. echo "✅ Live-DB erfolgreich lokal importiert."
  37. echo "📁 Lokaler Dump gespeichert unter: ${LOCAL_DUMP} (nicht eingecheckt)"
  38. echo ""
  39. # Optional: Files synchronisieren
  40. if [ ! -z "$LIVE_FILES_PATH" ]; then
  41. read -p "📂 Auch files/ synchronisieren? (j/N): " sync_files
  42. if [ "$sync_files" = "j" ] || [ "$sync_files" = "J" ]; then
  43. echo "🔄 Synchronisiere files/..."
  44. rsync -avz --progress \
  45. -e "ssh -p ${LIVE_SSH_PORT}" \
  46. "${LIVE_SSH_USER}@${LIVE_SSH_HOST}:${LIVE_FILES_PATH}/" \
  47. "./public/files/"
  48. echo "✅ Files synchronisiert."
  49. fi
  50. fi