templates-zabbix-itguys/deploy_package/extras/zabbix_config_backup.sh

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