#!/usr/bin/env bash set -euo pipefail DOCKER_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "$DOCKER_DIR/.." && pwd)" ENV_FILE="${ENV_FILE:-$DOCKER_DIR/.env.multisite}" if [[ ! -f "$ENV_FILE" ]]; then echo "Env mancante: $ENV_FILE" exit 1 fi load_env_file() { local env_file="$1" local line key value while IFS= read -r line || [[ -n "$line" ]]; do line="${line%$'\r'}" [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue [[ "$line" != *=* ]] && continue key="${line%%=*}" value="${line#*=}" export "$key=$value" done < "$env_file" } load_env_file "$ENV_FILE" "$ROOT_DIR/scripts/ops/netgescon-prepare-multisite-host-paths.sh" --env-file "$ENV_FILE" PROD_STORAGE_PATH="${PROD_STORAGE_PATH:-/srv/netgescon/prod/storage}" PROD_PUBLIC_PATH="${PROD_PUBLIC_PATH:-/srv/netgescon/prod/public}" DEMO_STORAGE_PATH="${DEMO_STORAGE_PATH:-/srv/netgescon/demo/storage}" DEMO_PUBLIC_PATH="${DEMO_PUBLIC_PATH:-/srv/netgescon/demo/public}" BACKUP_DIR="${MULTISITE_BACKUP_PATH:-$ROOT_DIR/storage/backups/multisite}" mkdir -p "$BACKUP_DIR" STAMP="$(date +%F_%H%M%S)" MYSQLDUMP_FLAGS="--single-transaction --skip-lock-tables" backup_tree() { local label="$1" local path="$2" if [[ ! -d "$path" ]]; then echo "Skip $label: path not found ($path)" return fi tar -czf "$BACKUP_DIR/${label}_${STAMP}.tar.gz" -C "$path" . } echo "Backup DB produzione..." docker exec netgescon_prod_db sh -lc "mysqldump $MYSQLDUMP_FLAGS -u root -p\"$PROD_DB_ROOT_PASSWORD\" \"$PROD_DB_DATABASE\"" > "$BACKUP_DIR/prod_${STAMP}.sql" echo "Backup DB demo..." docker exec netgescon_demo_db sh -lc "mysqldump $MYSQLDUMP_FLAGS -u root -p\"$DEMO_DB_ROOT_PASSWORD\" \"$DEMO_DB_DATABASE\"" > "$BACKUP_DIR/demo_${STAMP}.sql" echo "Backup filesystem produzione..." backup_tree "prod_storage" "$PROD_STORAGE_PATH" backup_tree "prod_public" "$PROD_PUBLIC_PATH" echo "Backup filesystem demo..." backup_tree "demo_storage" "$DEMO_STORAGE_PATH" backup_tree "demo_public" "$DEMO_PUBLIC_PATH" cp "$ENV_FILE" "$BACKUP_DIR/.env.multisite.${STAMP}.backup" echo "Backup completato in: $BACKUP_DIR"