#!/bin/bash set -euo pipefail SNAPSHOT_DIR="/opt/memento/backups/snapshots" SSH_KEY="/root/.ssh/memento-nas" NAS1="sepehr@192.168.1.132" NAS1_PATH="/volume1/backups/memento" NAS2="sepehr@192.168.1.146" NAS2_PATH="/volume1/backups/memento" LOG_FILE="/opt/memento/backups/backup.log" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-}" TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID:-}" send_alert() { if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \ -d chat_id="$TELEGRAM_CHAT_ID" -d text="$1" >/dev/null 2>&1 || true fi } log "=== Offsite backup sync ===" LATEST=$(ls -t "$SNAPSHOT_DIR"/*.sql.gz 2>/dev/null | head -1) if [ -z "$LATEST" ]; then log "ERROR: No snapshots to sync" send_alert "🚨 MEMENTO: Offsite backup failed - no snapshots found!" exit 1 fi for NAS_ADDR in "$NAS1" "$NAS2"; do if [ "$NAS_ADDR" = "$NAS1" ]; then NAS_PATH="$NAS1_PATH" NAS_NAME="NAS1 (192.168.1.132)" else NAS_PATH="$NAS2_PATH" NAS_NAME="NAS2 (192.168.1.146)" fi log "Syncing to $NAS_NAME..." ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$NAS_ADDR" "mkdir -p $NAS_PATH" 2>/dev/null scp -O -i "$SSH_KEY" -o StrictHostKeyChecking=no "$SNAPSHOT_DIR"/*.sql.gz "${NAS_ADDR}:${NAS_PATH}/" 2>&1 | tee -a "$LOG_FILE" if [ $? -eq 0 ]; then log "$NAS_NAME: sync complete" else log "ERROR: $NAS_NAME sync failed!" send_alert "🚨 MEMENTO: Offsite backup FAILED for $NAS_NAME!" fi done log "=== All offsite syncs complete ==="