#!/bin/bash

# POSTGRES SQL backup
#######################################

if ! [ -f /etc/backup-daily.conf ]; then
	echo "/etc/backup-daily.conf not found"
	exit 4
fi

BACKUP_ROOT=

. /etc/backup-daily.conf

[ -z $BACKUP_ROOT ] && exit 11
[ -d $BACKUP_ROOT ] || exit 21

BACKUP_DIR=$BACKUP_ROOT/pgsql
[ -d $BACKUP_DIR ] || mkdir $BACKUP_DIR

#######################################

[ -d $BACKUP_DIR/tmp ] && rm -r $BACKUP_DIR/tmp
mkdir $BACKUP_DIR/tmp

# get database names from postgresql
DBS=`sudo -u postgres psql -q -c "\l" | sed -n 4,/\eof/p | grep -v rows\) | awk {'print $1'} | grep -vE '^template[0|1]' |grep -vE '^\|'`

# save databases into separate files
for db in $DBS; do

    FILE=$BACKUP_DIR/tmp/$db.tar.gz

    sudo -u postgres pg_dump -Ft $db | gzip -c > $FILE

    #chown for security
    chown 0:0 $FILE
    chmod 0600 $FILE

done

[ -d $BACKUP_DIR/current ] && rm -r $BACKUP_DIR/current
mv $BACKUP_DIR/tmp $BACKUP_DIR/current
