Skip to content

Commit 26728b4

Browse files
committed
Add restore option
1 parent 21ce3fd commit 26728b4

File tree

1 file changed

+28
-18
lines changed

1 file changed

+28
-18
lines changed

backup.sh

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,31 @@ export AWS_DEFAULT_REGION=$S3_REGION
2626
export PGPASSWORD=$POSTGRES_PASSWORD
2727
POSTGRES_HOST_OPTS="-h $POSTGRES_HOST -p $POSTGRES_PORT -U $POSTGRES_USER $POSTGRES_EXTRA_OPTS"
2828

29-
# TODO: check if database is fresh
30-
31-
echo "Snapshotting $POSTGRES_DB database"
32-
pg_dump -Fc $POSTGRES_HOST_OPTS $POSTGRES_DB > dump.backup
33-
34-
echo "Rotating old snapshot"
35-
aws $AWS_ARGS s3 cp s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.backup s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.old.backup --acl public-read || true
36-
37-
echo "Uploading fresh snapshot to $S3_BUCKET/$S3_PATH/$S3_FILENAME"
38-
cat dump.backup | aws $AWS_ARGS s3 cp - s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.backup --acl public-read || exit 2
39-
40-
echo "Snapshot uploaded successfully, removing local file"
41-
rm dump.backup
42-
43-
if [ ! -z "$HEARTBEAT_URI" ]; then
44-
echo "Sending heartbeat signal"
45-
curl -m 10 --retry 5 $HEARTBEAT_URI
46-
fi
29+
case "${PG_BACKUP_ACTION:-dump}" in
30+
dump)
31+
# TODO: check if database is fresh
32+
echo "Snapshotting $POSTGRES_DB database"
33+
pg_dump -Fc $POSTGRES_HOST_OPTS $POSTGRES_DB > dump.backup
34+
35+
echo "Rotating old snapshot"
36+
aws $AWS_ARGS s3 cp s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.backup s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.old.backup --acl public-read || true
37+
38+
echo "Uploading fresh snapshot to $S3_BUCKET/$S3_PATH/$S3_FILENAME"
39+
cat dump.backup | aws $AWS_ARGS s3 cp - s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.backup --acl public-read || exit 2
40+
41+
echo "Snapshot uploaded successfully, removing local file"
42+
rm dump.backup
43+
44+
if [ ! -z "$HEARTBEAT_URI" ]; then
45+
echo "Sending heartbeat signal"
46+
curl -m 10 --retry 5 $HEARTBEAT_URI
47+
fi
48+
;;
49+
restore)
50+
echo "Downloading latest snapshot from $S3_BUCKET/$S3_PATH/$S3_FILENAME"
51+
aws $AWS_ARGS s3 cp s3://$S3_BUCKET/$S3_PATH/$S3_FILENAME.backup dump.backup --acl public-read || exit 2
52+
53+
echo "Restoring $POSTGRES_DB database"
54+
pg_restore -C -d $POSTGRES_DB $POSTGRES_HOST_OPTS dump.backup
55+
;;
56+
esac

0 commit comments

Comments
 (0)