Files
bot-pontos/scripts/backup-loop.sh
2026-10-23 22:31:02 -03:00

29 lines
925 B
Bash

#!/bin/sh
# Backup diário do Postgres com retenção (ARQUITETURA.md, 11.3 e 11.5).
# Roda no container "backup". IMPORTANTE: copie a pasta ./backups para fora
# da máquina (NAS ou outro servidor); um backup no mesmo disco não protege
# contra falha do disco.
set -eu
PGPASSWORD="$(cat /run/secrets/pg_password)"
export PGPASSWORD
INTERVAL="${BACKUP_INTERVAL_SECONDS:-86400}"
RETENTION_DAYS="${BACKUP_RETENTION_DAYS:-14}"
while true; do
timestamp="$(date +%Y%m%d-%H%M%S)"
file="/backups/botpontos-${timestamp}.dump"
if pg_dump -h "${PGHOST:-postgres}" -U "${PGUSER:-botpontos}" -d "${PGDATABASE:-botpontos}" -Fc -f "${file}.tmp"; then
mv "${file}.tmp" "$file"
echo "backup concluído: $file"
else
rm -f "${file}.tmp"
echo "backup FALHOU em ${timestamp}" >&2
fi
find /backups -name 'botpontos-*.dump' -mtime +"$RETENTION_DAYS" -delete
sleep "$INTERVAL"
done