sync_from_arilix.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/env bash
  2. # =============================================================================
  3. # Arilix (production) -> ohmu (test): www_arilix andmebaasi + Drupali HTML
  4. # Välja arvatud settings.php (ohmu oma jääb alles)
  5. # Käivita root õigustega: sudo bash sync_from_arilix.sh
  6. # Ajastatud: pühapäev 06:30 (ohmu ardo crontab)
  7. #
  8. # Tugevdused:
  9. # - set -euo pipefail (pipe vead ei maskeeru)
  10. # - flock-lukk (ei käivitu korduvalt, kui eelmine veel jookseb)
  11. # - dump kirjutatakse faili ja kontrollitakse suurust enne importi
  12. # - --routines --triggers --default-character-set=utf8mb4
  13. # - arilixi parool loetakse konteineri env-st (MYSQL_ROOT_PASSWORD)
  14. # - logifail /home/ardo/logs/bussikeskus-sync.log
  15. # =============================================================================
  16. set -euo pipefail
  17. ARILIX="root@100.74.36.86"
  18. OHMU_MARIADB_PASS="ai_root_pass_2026"
  19. ARILIX_HTML="/opt/drupal/bussikeskus/html"
  20. OHMU_HTML="/var/lib/docker/volumes/drupal_bussikeskus-html/_data"
  21. LOG="/home/ardo/logs/bussikeskus-sync.log"
  22. # ── flock-lukk: jäta vahele, kui eelmine käivitus veel jookseb ──
  23. exec 9>"/tmp/bussikeskus-sync.lock"
  24. flock -n 9 || { echo "Sync juba käib — väljun."; exit 1; }
  25. exec > >(tee -a "$LOG") 2>&1
  26. echo "=== $(date): Alustan sünkroonimist ==="
  27. # ── 1. MariaDB: dump arilixist faili, kontrolli, impordi ohmu-sse ──
  28. echo "[1/3] MariaDB: dump arilix www_arilix -> ohmu mariadb ..."
  29. DUMP="/tmp/www_arilix-$(date +%F).sql"
  30. ssh "$ARILIX" "docker exec mysqldb sh -c 'mariadb-dump -u root -p\"\$MYSQL_ROOT_PASSWORD\" --single-transaction --routines --triggers --default-character-set=utf8mb4 www_arilix'" > "$DUMP"
  31. if [ ! -s "$DUMP" ]; then
  32. echo "VIGA: dump on tühi — impordi tegemata jätan."
  33. rm -f "$DUMP"
  34. exit 1
  35. fi
  36. echo " Dump suurus: $(du -h "$DUMP" | cut -f1)"
  37. docker exec -i mariadb mariadb -u root -p"$OHMU_MARIADB_PASS" www_arilix < "$DUMP"
  38. rm -f "$DUMP"
  39. echo " DB sünkroonitud."
  40. # ── 2. Rsync Drupali HTML (v.a settings.php) — vajab root õigusi ──
  41. echo "[2/3] Rsync: arilix HTML -> ohmu (v.a settings.php) ..."
  42. rsync -av --delete --exclude="settings.php" -e "ssh" \
  43. "$ARILIX:$ARILIX_HTML/" \
  44. "$OHMU_HTML/"
  45. echo " HTML sünkroonitud."
  46. # ── 3. Tühjenda Drupali puhver ──
  47. echo "[3/3] Drupali puhvri tühjendamine..."
  48. docker exec drupal_bussikeskus sh -c "rm -rf /var/www/html/sites/default/files/cache/*" 2>/dev/null \
  49. || echo " (puhvri tühjendamine jäi vahele)"
  50. echo ""
  51. echo "=== $(date): Sünkroonimine valmis ==="