#!/bin/bash # Zabbix Config-Only Backup Script # Objetivo: Backup leve (apenas configurações) para recuperação rápida de desastres de config # Ignora tabelas pesadas de histórico (history*, trends*) # Configuração DB_NAME="zabbix" DB_USER="zabbix" BACKUP_DIR="/var/backups/zabbix_configs" DATE=$(date +%Y%m%d_%H%M%S) FILENAME="$BACKUP_DIR/zabbix_config_$DATE.sql.gz" # Criar diretório se não existir mkdir -p $BACKUP_DIR # Lista de padrões de tabelas para IGNORAR (apenas dados) # Mantemos o schema (-s) de tudo, mas dados (-a) ignoramos estas: EXCLUDE_DATA_FLAGS="" EXCLUDE_TABLES=( "history" "history_uint" "history_str" "history_log" "history_text" "trends" "trends_uint" "auditlog" "events" "problem" "alerts" "acknowledges" "service_alarms" ) for TABLE in "${EXCLUDE_TABLES[@]}"; do EXCLUDE_DATA_FLAGS="$EXCLUDE_DATA_FLAGS --exclude-table-data=$TABLE" done echo "Iniciando backup de configuração..." echo "Arquivo: $FILENAME" # pg_dump # -Fp = Plain text (melhor para editar se precisar) ou -Fc (Custom format) # Usando pipe para gzip sudo -u postgres pg_dump $DB_NAME $EXCLUDE_DATA_FLAGS | gzip > "$FILENAME" SIZE=$(du -h "$FILENAME" | cut -f1) echo "Backup concluído com sucesso. Tamanho: $SIZE" # Manter apenas últimos 30 dias find $BACKUP_DIR -name "zabbix_config_*.sql.gz" -mtime +30 -delete