#!/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