#!/usr/bin/env bash # Sincronizza modifiche da DEV verso produzione in modo controllato # Uso: ./scripts/sync-to-prod.sh --confirm oppure --dry-run set -euo pipefail if [[ "${1:-}" == "--dry-run" ]]; then DRY=1; else DRY=0; fi if [[ $DRY -eq 0 && "${1:-}" != "--confirm" ]]; then echo "ERRORE: specifica --dry-run per test o --confirm per eseguire" >&2 exit 1 fi SRC="/home/michele/netgescon/netgescon-laravel" DST="/var/www/netgescon" EXCLUDES=( ".git/" "vendor/" "node_modules/" "public/build/" "storage/app/private/" "storage/app/public/" "storage/app/reports/" "storage/app/archivi-import/" "storage/logs/" "storage/framework/cache/" "storage/framework/views/" "storage/framework/sessions/" "storage/framework/testing/" "public/storage/" "scripts/sync-to-prod.sh" "scripts/sync-to-dev.sh" ) EX_ARGS=() for e in "${EXCLUDES[@]}"; do EX_ARGS+=("--exclude=${e}"); done RSYNC_FLAGS="-rltDz --delete --no-owner --no-group" [[ $DRY -eq 1 ]] && RSYNC_FLAGS+=" --dry-run" rsync $RSYNC_FLAGS "${EX_ARGS[@]}" "$SRC/" "$DST/" echo "Sync to PROD completato $([[ $DRY -eq 1 ]] && echo '(dry-run)' || echo '(APPLICATO)')"