|
|
@@ -3,37 +3,57 @@
|
|
|
# Hetzner -> ohmu: dr_mustikas andmebaasi + Drupali HTML sünkroonimine
|
|
|
# Välja arvatud settings.php (ohmu oma jääb alles)
|
|
|
# Käivita root õigustega: sudo bash sync_from_hetzner.sh
|
|
|
+# Ajastatud: pühapäev 05: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
|
|
|
+# - logifail /home/ardo/logs/mustikas-sync.log
|
|
|
# =============================================================================
|
|
|
-set -e
|
|
|
+set -euo pipefail
|
|
|
|
|
|
HETZNER="root@100.80.222.54"
|
|
|
OHMU_MARIADB_PASS="ai_root_pass_2026"
|
|
|
HETZNER_HTML="/var/lib/docker/volumes/drupal_mustikas-1-html/_data"
|
|
|
OHMU_HTML="/var/lib/docker/volumes/drupal_mustikas-html/_data"
|
|
|
+LOG="/home/ardo/logs/mustikas-sync.log"
|
|
|
|
|
|
+# ── flock-lukk: jäta vahele, kui eelmine käivitus veel jookseb ──
|
|
|
+exec 9>"/tmp/mustikas-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 hetznerist ja import ohmu-sse
|
|
|
+# ── 1. MariaDB: dump hetznerist faili, kontrolli, impordi ohmu-sse ──
|
|
|
echo "[1/3] MariaDB: dump hetzner dr_mustikas -> ohmu mariadb ..."
|
|
|
-ssh "$HETZNER" "docker exec mariadb_simple sh -c 'mariadb-dump -u root -p\"\$(cat /run/secrets/mysql_root_password)\" --single-transaction dr_mustikas'" \
|
|
|
- | docker exec -i mariadb mariadb -u root -p"$OHMU_MARIADB_PASS" dr_mustikas 2>/dev/null
|
|
|
+DUMP="/tmp/dr_mustikas-$(date +%F).sql"
|
|
|
+ssh "$HETZNER" "docker exec mariadb_simple sh -c 'mariadb-dump -u root -p\"\$(cat /run/secrets/mysql_root_password)\" --single-transaction --routines --triggers --default-character-set=utf8mb4 dr_mustikas'" > "$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" dr_mustikas < "$DUMP"
|
|
|
+rm -f "$DUMP"
|
|
|
echo " DB sünkroonitud."
|
|
|
|
|
|
-# 2. Rsync Drupali HTML (v.a settings.php) — vajab root õigusi
|
|
|
+# ── 2. Rsync Drupali HTML (v.a settings.php) — vajab root õigusi ──
|
|
|
echo "[2/3] Rsync: hetzner HTML -> ohmu (v.a settings.php) ..."
|
|
|
rsync -av --delete --exclude="settings.php" -e "ssh" \
|
|
|
"$HETZNER:$HETZNER_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_mustikas sh -c "cd /var/www/html && php -r '
|
|
|
- include_once \"includes/bootstrap.inc\";
|
|
|
- drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
|
|
|
- cache_clear_all();
|
|
|
- drupal_set_message(\"Cache cleared.\");
|
|
|
-'" 2>/dev/null || docker exec drupal_mustikas sh -c "rm -rf /var/www/html/sites/default/files/cache/*" 2>/dev/null || echo " (puhvri tühjendamine jäi vahele)"
|
|
|
+docker exec drupal_mustikas 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 ==="
|