Files
utilities/personal/cron_scripts/pg_backup.sh
T
2026-04-23 08:26:38 -04:00

17 lines
659 B
Bash

#!/bin/bash
# Configuration
BACKUP_DIR="/var/lib/postgresql_archive/pg_dumpfiles"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
# Ensure directory exists
mkdir -p "$BACKUP_DIR"
# Get all non-system databases and back each one up.
psql -U postgres -d postgres -Atc "SELECT datname FROM pg_database WHERE datistemplate = false AND datname <> 'postgres' ORDER BY datname" | while IFS= read -r DB_NAME; do
pg_dump -U postgres -d "$DB_NAME" | gzip > "$BACKUP_DIR/${DB_NAME}_$TIMESTAMP.sql.gz"
echo "Backup completed: ${DB_NAME}_$TIMESTAMP.sql.gz"
done
# Delete backups older than retention period
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -delete