17 lines
659 B
Bash
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 |