25 lines
699 B
Bash
25 lines
699 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ -z "${DATABASE_URL:-}" ]]; then
|
|
echo "DATABASE_URL is required"
|
|
exit 1
|
|
fi
|
|
|
|
BACKUP_DIR="${BACKUP_DIR:-./backups/postgres}"
|
|
RETENTION_DAYS="${RETENTION_DAYS:-7}"
|
|
TIMESTAMP="$(date -u +%Y%m%dT%H%M%SZ)"
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
echo "Creating logical backup..."
|
|
pg_dump "$DATABASE_URL" --format=custom --file="${BACKUP_DIR}/fiddy_${TIMESTAMP}.dump"
|
|
|
|
echo "Creating globals backup..."
|
|
pg_dumpall "$DATABASE_URL" --globals-only > "${BACKUP_DIR}/fiddy_globals_${TIMESTAMP}.sql"
|
|
|
|
echo "Pruning backups older than ${RETENTION_DAYS} days..."
|
|
find "$BACKUP_DIR" -type f -name "fiddy_*" -mtime "+${RETENTION_DAYS}" -delete
|
|
|
|
echo "Backup complete: ${BACKUP_DIR}"
|