#!/usr/bin/env bash # ============================================================================= # 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 -euo pipefail ARILIX="root@100.74.36.86" 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 faili, kontrolli, impordi ohmu-sse ── echo "[1/3] MariaDB: dump arilix www_arilix -> ohmu mariadb ..." 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) — 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 ── 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 \ || echo " (puhvri tühjendamine jäi vahele)" echo "" echo "=== $(date): Sünkroonimine valmis ==="