71 lines
2.1 KiB
Bash
Executable File
71 lines
2.1 KiB
Bash
Executable File
#!/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"
|