- Next.js 14 frontend with dark cyan/navy theme - tRPC API with Prisma ORM - MeshCentral, LibreNMS, Headwind MDM integrations - Multi-tenant architecture - Alert system with email/SMS/webhook notifications - Docker Compose deployment - Complete documentation
73 lines
2.0 KiB
Bash
73 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
# MSP Monitor Dashboard - Database Backup Script
|
|
# Crea un backup de la base de datos PostgreSQL
|
|
|
|
set -e
|
|
|
|
# Configuracion
|
|
BACKUP_DIR="${BACKUP_DIR:-/backups}"
|
|
RETENTION_DAYS="${RETENTION_DAYS:-30}"
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
BACKUP_FILE="msp_monitor_${DATE}.sql.gz"
|
|
|
|
# Cargar variables de entorno
|
|
if [ -f .env ]; then
|
|
export $(cat .env | grep -v '^#' | xargs)
|
|
fi
|
|
|
|
# Valores por defecto
|
|
DB_HOST="${DB_HOST:-localhost}"
|
|
DB_PORT="${DB_PORT:-5432}"
|
|
DB_USER="${POSTGRES_USER:-mspmonitor}"
|
|
DB_NAME="${POSTGRES_DB:-msp_monitor}"
|
|
DB_PASSWORD="${POSTGRES_PASSWORD:-changeme}"
|
|
|
|
echo "======================================"
|
|
echo " MSP Monitor - Database Backup"
|
|
echo "======================================"
|
|
echo "Fecha: $(date)"
|
|
echo "Base de datos: $DB_NAME"
|
|
echo ""
|
|
|
|
# Crear directorio de backups si no existe
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# Crear backup
|
|
echo "Creando backup..."
|
|
export PGPASSWORD="$DB_PASSWORD"
|
|
|
|
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
|
|
--no-owner --no-privileges --format=custom | gzip > "$BACKUP_DIR/$BACKUP_FILE"
|
|
|
|
unset PGPASSWORD
|
|
|
|
# Verificar que el backup se creo correctamente
|
|
if [ -f "$BACKUP_DIR/$BACKUP_FILE" ]; then
|
|
SIZE=$(du -h "$BACKUP_DIR/$BACKUP_FILE" | cut -f1)
|
|
echo "[✓] Backup creado: $BACKUP_DIR/$BACKUP_FILE ($SIZE)"
|
|
else
|
|
echo "[✗] Error creando backup"
|
|
exit 1
|
|
fi
|
|
|
|
# Eliminar backups antiguos
|
|
echo ""
|
|
echo "Limpiando backups antiguos (mas de $RETENTION_DAYS dias)..."
|
|
find "$BACKUP_DIR" -name "msp_monitor_*.sql.gz" -type f -mtime +$RETENTION_DAYS -delete
|
|
REMAINING=$(ls -1 "$BACKUP_DIR"/msp_monitor_*.sql.gz 2>/dev/null | wc -l)
|
|
echo "[✓] Backups restantes: $REMAINING"
|
|
|
|
# Opcional: Subir a S3 si esta configurado
|
|
if [ -n "$S3_BUCKET" ] && command -v aws &> /dev/null; then
|
|
echo ""
|
|
echo "Subiendo backup a S3..."
|
|
aws s3 cp "$BACKUP_DIR/$BACKUP_FILE" "s3://$S3_BUCKET/backups/$BACKUP_FILE"
|
|
echo "[✓] Backup subido a s3://$S3_BUCKET/backups/$BACKUP_FILE"
|
|
fi
|
|
|
|
echo ""
|
|
echo "======================================"
|
|
echo " Backup completado"
|
|
echo "======================================"
|