36 lines
924 B
Bash
36 lines
924 B
Bash
#!/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 '{}' ';'
|