42 lines
1.3 KiB
Bash
42 lines
1.3 KiB
Bash
#!/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
|