Răsfoiți Sursa

Tugevda bussikeskus prod->dev sünkroonimisskripti

- set -euo pipefail (pipe vead ei maskeeru)
- flock-lukk korduvkäivituse vastu
- dump faili + suuruse kontroll enne importi
- --routines --triggers --default-character-set=utf8mb4
- arilixi parool loetakse konteineri env-st (MYSQL_ROOT_PASSWORD)
- logifail /home/ardo/logs/bussikeskus-sync.log
- ajastatud pühapäev 06:30 (ardo crontab)
ardo 1 zi în urmă
părinte
comite
243d3100a8
1 a modificat fișierele cu 33 adăugiri și 9 ștergeri
  1. 33 9
      third/drupal/bussikeskus/sync_from_arilix.sh

+ 33 - 9
third/drupal/bussikeskus/sync_from_arilix.sh

@@ -3,34 +3,58 @@
 # Arilix (production) -> ohmu (test): www_arilix andmebaasi + Drupali HTML
 # Välja arvatud settings.php (ohmu oma jääb alles)
 # Käivita root õigustega: sudo bash sync_from_arilix.sh
+# Ajastatud: pühapäev 06:30 (ohmu ardo crontab)
+#
+# Tugevdused:
+#   - set -euo pipefail (pipe vead ei maskeeru)
+#   - flock-lukk (ei käivitu korduvalt, kui eelmine veel jookseb)
+#   - dump kirjutatakse faili ja kontrollitakse suurust enne importi
+#   - --routines --triggers --default-character-set=utf8mb4
+#   - arilixi parool loetakse konteineri env-st (MYSQL_ROOT_PASSWORD)
+#   - logifail /home/ardo/logs/bussikeskus-sync.log
 # =============================================================================
-set -e
+set -euo pipefail
 
 ARILIX="root@100.74.36.86"
-ARILIX_MARIADB_PASS="JnBWLj921al3LXeQWAEA"
 OHMU_MARIADB_PASS="ai_root_pass_2026"
 ARILIX_HTML="/opt/drupal/bussikeskus/html"
 OHMU_HTML="/var/lib/docker/volumes/drupal_bussikeskus-html/_data"
+LOG="/home/ardo/logs/bussikeskus-sync.log"
 
+# ── flock-lukk: jäta vahele, kui eelmine käivitus veel jookseb ──
+exec 9>"/tmp/bussikeskus-sync.lock"
+flock -n 9 || { echo "Sync juba käib — väljun."; exit 1; }
+
+exec > >(tee -a "$LOG") 2>&1
 echo "=== $(date): Alustan sünkroonimist ==="
 
-# 1. MariaDB: dump arilixist ja import ohmu-sse
+# ── 1. MariaDB: dump arilixist faili, kontrolli, impordi ohmu-sse ──
 echo "[1/3] MariaDB: dump arilix www_arilix -> ohmu mariadb ..."
-ssh "$ARILIX" "docker exec mysqldb mariadb-dump -u root -p\"$ARILIX_MARIADB_PASS\" --single-transaction www_arilix" \
-  | docker exec -i mariadb mariadb -u root -p"$OHMU_MARIADB_PASS" www_arilix 2>/dev/null
+DUMP="/tmp/www_arilix-$(date +%F).sql"
+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"
+
+if [ ! -s "$DUMP" ]; then
+    echo "VIGA: dump on tühi — impordi tegemata jätan."
+    rm -f "$DUMP"
+    exit 1
+fi
+echo "  Dump suurus: $(du -h "$DUMP" | cut -f1)"
+
+docker exec -i mariadb mariadb -u root -p"$OHMU_MARIADB_PASS" www_arilix < "$DUMP"
+rm -f "$DUMP"
 echo "  DB sünkroonitud."
 
-# 2. Rsync Drupali HTML (v.a settings.php)
+# ── 2. Rsync Drupali HTML (v.a settings.php) — vajab root õigusi ──
 echo "[2/3] Rsync: arilix HTML -> ohmu (v.a settings.php) ..."
 rsync -av --delete --exclude="settings.php" -e "ssh" \
   "$ARILIX:$ARILIX_HTML/" \
   "$OHMU_HTML/"
 echo "  HTML sünkroonitud."
 
-# 3. Tühjenda Drupali puhver
+# ── 3. Tühjenda Drupali puhver ──
 echo "[3/3] Drupali puhvri tühjendamine..."
-docker exec drupal_bussikeskus sh -c "rm -rf /var/www/html/sites/default/files/cache/*" 2>/dev/null || true
-echo "  Puhver tühjendatud."
+docker exec drupal_bussikeskus sh -c "rm -rf /var/www/html/sites/default/files/cache/*" 2>/dev/null \
+  || echo "  (puhvri tühjendamine jäi vahele)"
 
 echo ""
 echo "=== $(date): Sünkroonimine valmis ==="