@@ -26,21 +26,31 @@ export AWS_DEFAULT_REGION=$S3_REGION
2626export PGPASSWORD=$POSTGRES_PASSWORD
2727POSTGRES_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