From 826bec925f11718fe1c8f06ecd6bf705315f45b5 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 24 Oct 2024 17:03:02 +0200 Subject: [PATCH] add example pg_backup.sh script --- README.md | 2 +- pg_backup.sh | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 pg_backup.sh diff --git a/README.md b/README.md index 0bcdb81..99985f7 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ services: backupbot.backup.pre-hook: "/pg_backup.sh backup" backupbot.backup.volumes.db.path: "backup.sql" backupbot.restore.post-hook: '/pg_backup.sh restore' - backupbot.backup.volumes.redis: false + backupbot.backup.volumes.redis: "false" ``` - `backupbot.backup` -- set to `true` to back up this service (REQUIRED) diff --git a/pg_backup.sh b/pg_backup.sh new file mode 100644 index 0000000..4029803 --- /dev/null +++ b/pg_backup.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -e + +BACKUP_FILE='/var/lib/postgresql/data/backup.sql' + +function backup { + export PGPASSWORD=$(cat $POSTGRES_PASSWORD_FILE) + 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 +} + +$@