#!/bin/bash set -e BACKUP_FILE='/var/lib/postgresql/data/pgdata/backup.sql' # database of the collaboration server (yhub), since v6 YHUB_DB='yhub' YHUB_BACKUP_FILE='/var/lib/postgresql/data/pgdata/backup-yhub.sql' function backup { export PGPASSWORD=$(cat $POSTGRES_PASSWORD_FILE) pg_dump -U ${POSTGRES_USER} ${POSTGRES_DB} > $BACKUP_FILE if psql -U ${POSTGRES_USER} -d postgres -tAc "SELECT 1 FROM pg_database WHERE datname='${YHUB_DB}'" | grep -q 1; then pg_dump -U ${POSTGRES_USER} ${YHUB_DB} > $YHUB_BACKUP_FILE fi } function restore { cd /var/lib/postgresql/data/pgdata/ 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 if [ -f $YHUB_BACKUP_FILE ]; then psql -U ${POSTGRES_USER} -d postgres -c "DROP DATABASE IF EXISTS ${YHUB_DB} WITH (FORCE);" createdb -U ${POSTGRES_USER} ${YHUB_DB} psql -U ${POSTGRES_USER} -d ${YHUB_DB} -1 -f $YHUB_BACKUP_FILE fi trap - EXIT INT TERM restore_config } $@