#!/usr/bin/env bash # Restaura um dump gerado por scripts/backup.sh. # Uso: scripts/restore.sh backups/postgres-20260101-120000.dump # # ATENÇÃO: operação destrutiva — substitui todo o conteúdo atual do banco # (schemas public + asterisk) pelo conteúdo do dump. set -euo pipefail cd "$(dirname "$0")/.." DUMP_FILE="${1:?Uso: scripts/restore.sh }" if [ ! -f "$DUMP_FILE" ]; then echo "Erro: arquivo não encontrado: $DUMP_FILE" >&2 exit 1 fi set -a; source .env; set +a echo "########################################################################" echo "# ATENÇÃO: isso vai APAGAR e SUBSTITUIR o banco '$POSTGRES_DB' atual #" echo "# pelo conteúdo de: $DUMP_FILE" echo "# Isso inclui campanhas, leads, chamadas, usuários E os objetos PJSIP #" echo "# realtime (troncos/ramais deixarão de aparecer no Asterisk se não #" echo "# estiverem no dump)." echo "########################################################################" read -r -p "Digite 'restaurar' para confirmar: " CONFIRM if [ "$CONFIRM" != "restaurar" ]; then echo "Cancelado." exit 1 fi echo "==> Parando serviços de aplicação (mantendo Postgres no ar)..." docker compose stop api asterisk-events dialer-worker frontend nginx 2>/dev/null || true echo "==> Restaurando dump..." docker compose exec -T postgres pg_restore -U "$POSTGRES_USER" -d "$POSTGRES_DB" --clean --if-exists < "$DUMP_FILE" echo "==> Reiniciando serviços de aplicação..." docker compose up -d api asterisk-events dialer-worker frontend nginx echo "==> Restore concluído. Verifique com: scripts/healthcheck.sh"