This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
services/postgres/run

48 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -eu
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. $DIR/../help.sh
postgres_help() {
echo "./run backup : Lancer la sauvegarde d'une base de données"
echo "./run restore : Restore une sauvegarde"
}
postgres_backup() {
script_env
backup_folder_create
POSTGRES_BACKUP_FILE_DEFAULT=backups/`date +%Y%m%d_%H%M%S`_$POSTGRES_DB.sql
POSTGRES_BACKUP_FILE=${POSTGRES_BACKUP_FILE:-$POSTGRES_BACKUP_FILE_DEFAULT}
echo "🏁 Start backup PostgreSQL database '$POSTGRES_DB' in '$POSTGRES_BACKUP_FILE'"
docker exec -i $POSTGRES_CONTAINER_NAME pg_dump $POSTGRES_DB -U $POSTGRES_USER > $POSTGRES_BACKUP_FILE
}
postgres_restore() {
script_env
echo "🏁 Start restore PostgreSQL database '$POSTGRES_DB' from '$POSTGRES_BACKUP_FILE'"
docker restart $POSTGRES_CONTAINER_NAME
docker exec $POSTGRES_CONTAINER_NAME psql template1 -U $POSTGRES_USER -c "DROP DATABASE $POSTGRES_DB"
docker exec $POSTGRES_CONTAINER_NAME psql template1 -U $POSTGRES_USER -c "CREATE DATABASE $POSTGRES_DB with owner $POSTGRES_USER"
cat $POSTGRES_BACKUP_FILE | docker exec -i $POSTGRES_CONTAINER_NAME psql -U $POSTGRES_USER -d $POSTGRES_DB
}
if [ $# -ge 1 ]; then
if [ "${1}" == "backup" ]; then
script_start
postgres_backup
script_end
elif [ "${1}" == "restore" ]; then
script_start
postgres_restore
script_end
elif [ "${1}" != "--only-source" ]; then
postgres_help
fi
else
postgres_help
fi