35 lines
888 B
Bash
35 lines
888 B
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
BACKUP_FILE='/var/lib/postgresql/data/backup.sql'
|
|
|
|
function backup {
|
|
export PGPASSWORD=$(cat /run/secrets/db_password)
|
|
pg_dump -U ${POSTGRES_USER} ${POSTGRES_DB} > $BACKUP_FILE
|
|
}
|
|
|
|
function restore {
|
|
cd /var/lib/postgresql/data/
|
|
restore_config(){
|
|
# Restore allowed connections
|
|
cat pg_hba.conf.bak > pg_hba.conf
|
|
su postgres -c 'pg_ctl reload'
|
|
}
|
|
# Don't allow any other connections than local
|
|
cp pg_hba.conf pg_hba.conf.bak
|
|
echo "local all all trust" > pg_hba.conf
|
|
su postgres -c 'pg_ctl reload'
|
|
trap restore_config EXIT INT TERM
|
|
|
|
# Recreate Database
|
|
psql -U ${POSTGRES_USER} -d postgres -c "DROP DATABASE ${POSTGRES_DB} WITH (FORCE);"
|
|
createdb -U ${POSTGRES_USER} ${POSTGRES_DB}
|
|
psql -U ${POSTGRES_USER} -d ${POSTGRES_DB} -1 -f $BACKUP_FILE
|
|
|
|
trap - EXIT INT TERM
|
|
restore_config
|
|
}
|
|
|
|
$@
|