#!/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin HOST=localhost PORT=5432 PGPASSWORD=$PG_PASS USER=postgres TPL=template1 pathB=./backup DBUSER=$DB_USER DBPASS=$DB_PASS DATABASE=$DB_NAME psql_connect() { export PGPASSWORD psql -h $HOST -U $USER -p $PORT -c "SELECT VERSION()" > /dev/null 2> pg_restore.tmp if [ '0' -ne "$?" ]; then echo "Can't connect to PostgreSQL $HOST\n$(cat pg_restore.tmp)" echo "Error: Connection to $HOST failed" exit fi rm pg_restore.tmp } psql_query() { sql_tmp=$(mktemp) echo "$1" > $sql_tmp export PGPASSWORD psql -h $HOST -U $USER -f "$sql_tmp" #2> /dev/null rm -f $sql_tmp } add_pgsql_database() { psql_connect #query="CREATE ROLE $DBUSER WITH LOGIN PASSWORD '$DBPASS'" #psql_query "$query" > /dev/null query="CREATE DATABASE $DATABASE OWNER $DBUSER" if [ "$TPL" = 'template0' ]; then query="$query ENCODING '$charset' TEMPLATE $TPL" else query="$query TEMPLATE $TPL" fi psql_query "$query" > /dev/null query="GRANT ALL PRIVILEGES ON DATABASE $DATABASE TO $DBUSER" psql_query "$query" > /dev/null query="GRANT CONNECT ON DATABASE template1 to $DBUSER" psql_query "$query" > /dev/null query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER'" md5=$(psql_query "$query" | grep md5 | cut -f 2 -d \ ) } psql_connect query="REVOKE ALL PRIVILEGES ON DATABASE $DATABASE FROM $DBUSER" psql_query "$query" query="DROP DATABASE $DATABASE" psql_query "$query" add_pgsql_database PGPASSWORD=$PG_PASS export PGPASSWORD pg_restore -j 2 -h $HOST -U $DBUSER -d $DATABASE $pathB/$1 unset PGPASSWORD