1
0
ubuntu.22.04/pg_restore.sh
2025-04-07 13:56:40 +03:00

75 lines
1.8 KiB
Bash

#!/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