#!/bin/bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" BACKUP_DIR="${BACKUP_DIR:-$PROJECT_DIR/backups}" TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_PATH="$BACKUP_DIR/$TIMESTAMP" mkdir -p "$BACKUP_PATH" echo "[1/2] Backup database..." docker compose -f "$PROJECT_DIR/docker-compose.yml" exec -T db \ pg_dump -U ecommerce ecommerce | gzip > "$BACKUP_PATH/db.sql.gz" echo " → $BACKUP_PATH/db.sql.gz" echo "[2/2] Backup uploads..." if [ -d "$PROJECT_DIR/data/uploads" ] && [ "$(ls -A "$PROJECT_DIR/data/uploads")" ]; then tar -czf "$BACKUP_PATH/uploads.tar.gz" -C "$PROJECT_DIR/data" uploads echo " → $BACKUP_PATH/uploads.tar.gz" else echo " (nessun file in data/uploads, saltato)" fi echo "" echo "Backup completato: $BACKUP_PATH" # Rimuovi backup più vecchi di 30 giorni find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} + 2>/dev/null || true