postgresql_backup. draft.
This commit is contained in:
parent
d9eccc4a11
commit
21eeaf66ee
38
postgresql_backup/pg_backup.sh
Normal file
38
postgresql_backup/pg_backup.sh
Normal file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Configuration
|
||||
HOST="localhost"
|
||||
PORT="5432"
|
||||
USER="your_postgres_user"
|
||||
BACKUP_PATH="/path/to/backup/directory"
|
||||
DUMP_FORMAT="custom" # Set to "custom" for .dump or "sql" for plaintext SQL
|
||||
EXTENSION="dump" # Default extension
|
||||
|
||||
# Adjust file extension based on dump format
|
||||
if [[ "$DUMP_FORMAT" == "sql" ]]; then
|
||||
EXTENSION="sql.gz"
|
||||
fi
|
||||
|
||||
# Create backup directory if it doesn't exist
|
||||
mkdir -p "$BACKUP_PATH"
|
||||
|
||||
# Get a list of all databases, excluding template databases
|
||||
DATABASES=$(psql -h "$HOST" -p "$PORT" -U "$USER" -d postgres -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;")
|
||||
|
||||
# Loop over each database and create a backup
|
||||
for DB in $DATABASES; do
|
||||
BACKUP_FILE="$BACKUP_PATH/$DB.$EXTENSION"
|
||||
|
||||
if [[ "$DUMP_FORMAT" == "custom" ]]; then
|
||||
# Create a compressed custom-format backup
|
||||
pg_dump -h "$HOST" -p "$PORT" -U "$USER" -Fc "$DB" -f "$BACKUP_FILE"
|
||||
elif [[ "$DUMP_FORMAT" == "sql" ]]; then
|
||||
# Create a plain-text SQL backup and compress it with gzip
|
||||
pg_dump -h "$HOST" -p "$PORT" -U "$USER" "$DB" | gzip > "$BACKUP_FILE"
|
||||
else
|
||||
echo "Invalid DUMP_FORMAT specified: $DUMP_FORMAT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Backup for database '$DB' created at '$BACKUP_FILE'"
|
||||
done
|
Loading…
Reference in a new issue