From cc24a7d1238fc74d71c2af0448b8b8880b9e5db7 Mon Sep 17 00:00:00 2001 From: Romein van Buren Date: Sun, 4 May 2025 18:03:15 +0200 Subject: [PATCH] Add restore script --- Dockerfile | 2 +- src/{restore__wip__.sh => restore.sh} | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) rename src/{restore__wip__.sh => restore.sh} (52%) diff --git a/Dockerfile b/Dockerfile index cd21100..a846bf3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,6 @@ ENV BACKUP_KEEP_DAYS '' ADD src/run.sh run.sh ADD src/env.sh env.sh ADD src/backup.sh backup.sh -# ADD src/restore.sh restore.sh -- not ready yet +ADD src/restore.sh restore.sh CMD ["sh", "run.sh"] diff --git a/src/restore__wip__.sh b/src/restore.sh similarity index 52% rename from src/restore__wip__.sh rename to src/restore.sh index c54986c..908d45a 100644 --- a/src/restore__wip__.sh +++ b/src/restore.sh @@ -8,18 +8,18 @@ source ./env.sh s3_uri_base="s3://${S3_BUCKET}/${S3_PREFIX}" if [ -z "$PASSPHRASE" ]; then - file_type=".dump" + file_type=".tar.gz" else - file_type=".dump.gpg" + file_type=".tar.gz.gpg" fi if [ $# -eq 1 ]; then timestamp="$1" - key_suffix="${POSTGRES_DATABASE}_${timestamp}${file_type}" + key_suffix="${BACKUP_NAME}_${timestamp}${file_type}" else echo "Finding latest backup..." key_suffix=$( - aws $aws_args s3 ls "${s3_uri_base}/${POSTGRES_DATABASE}" \ + aws $aws_args s3 ls "${s3_uri_base}/${BACKUP_NAME}" \ | sort \ | tail -n 1 \ | awk '{ print $4 }' @@ -27,18 +27,16 @@ else fi echo "Fetching backup from S3..." -aws $aws_args s3 cp "${s3_uri_base}/${key_suffix}" "db${file_type}" +aws $aws_args s3 cp "${s3_uri_base}/${key_suffix}" "dump${file_type}" if [ -n "$PASSPHRASE" ]; then echo "Decrypting backup..." - gpg --decrypt --batch --passphrase "$PASSPHRASE" db.dump.gpg > db.dump - rm db.dump.gpg + gpg --decrypt --batch --passphrase "$PASSPHRASE" dump.tar.gz.gpg > dump.tar.gz + rm dump.tar.gz.gpg fi -conn_opts="-h $POSTGRES_HOST -p $POSTGRES_PORT -U $POSTGRES_USER -d $POSTGRES_DATABASE" - echo "Restoring from backup..." -pg_restore $conn_opts --clean --if-exists db.dump -rm db.dump +tar -xzf dump.tar.gz -C /data --strip-components 1 +rm dump.tar.gz echo "Restore complete."