#!/bin/sh set -e # Default configuration DATABASES='' BACKUP_DIR=/data/backup/postgresql RETENTION_DAYS=7 if ! source /etc/mkpsqlbackup.conf ; then echo '[MKPSQLBACKUP] : Unable to load configuration file' >&2 exit 1 fi if [ "$(id -un)" != 'postgres' ] ; then echo '[MKPSQLBACKUP] : This script must be run as postgres user' >&2 exit 2 fi FINAL_BACKUP_DIR="$BACKUP_DIR/-$(date '+%Y-%m-%d')" echo "[MKPSQLBACKUP] : Creating backup directory $FINAL_BACKUP_DIR" if ! mkdir -p "$FINAL_BACKUP_DIR" ; then echo "[MKPSQLBACKUP] : Unable to create backup directory $FINAL_BACKUP_DIR" exit 3 fi for db in DATABASES ; do echo "[MKPSQLBACKUP] : Backup of $db" if ! pg_dump -Fc "$db" -f "$FINAL_BACKUP_DIR/$db" ; then echo "[MKPSQLBACKUP] : Unable to backup database $db" >&2 fi done echo '[MKPSQLBACKUP] : Purging old backups' find "$BACKUP_DIR" -maxdepth 1 mindepth 1 -mtime +"$RETENTION_DAYS" -exec rm -rf '{}' ';'