summaryrefslogtreecommitdiff
path: root/scripts/backup-postgres.sh
blob: f6444c9e05ef1ae1ce5cc988e400b027ede48486 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env bash
set -euo pipefail

: "${AIGW_DATABASE_URL:?AIGW_DATABASE_URL is required}"
backup_dir="${AIGW_BACKUP_DIR:-./backups}"
retention_days="${AIGW_BACKUP_RETENTION_DAYS:-30}"
mkdir -p -- "$backup_dir"
chmod 700 "$backup_dir"
timestamp="$(date -u +%Y%m%dT%H%M%SZ)"
target="$backup_dir/aigw-$timestamp.dump"
pg_dump --dbname="$AIGW_DATABASE_URL" --format=custom --compress=9 --file="$target"
sha256sum "$target" >"$target.sha256"
find "$backup_dir" -maxdepth 1 -type f -name 'aigw-*.dump*' -mtime "+$retention_days" -delete
printf 'backup=%s\nchecksum=%s.sha256\n' "$target" "$target"