Projeto bot pontos
This commit is contained in:
28
scripts/backup-loop.sh
Normal file
28
scripts/backup-loop.sh
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user