bash-pg-backup-rotate.sh
#!/usr/bin/env bash
set -Eeuo pipefail
: "${DATABASE_URL:?set DATABASE_URL}"
dir="/var/backups/app"
mkdir -p "$dir"
file="$dir/db-$(date +%F-%H%M).sql.gz"
pg_dump --no-owner --no-privileges "$DATABASE_URL" | gzip > "$file"
echo "saved $file ($(du -h "$file" | cut -f1))"
ls -1t "$dir"/db-*.sql.gz | tail -n +15 | xargs -r rm --
# cron: 15 2 * * * /opt/app/backup.sh >> /var/log/app-backup.log 2>&1