diff --git a/archive-backup.sh b/archive-backup.sh new file mode 100755 index 00000000..9c6463b0 --- /dev/null +++ b/archive-backup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -euxo pipefail + +today=`date +"%Y-%m-%d"` +echo $today +dump_file=/tmp/myskillbox_backup.dump + +# look up the list of backups from the heroku cli, +# then look for the first line of the backup list and +# look for today's date. script fails if nothing is found +# (grep exits with an error code) +heroku pg:backups --app $APP_NAME | grep '=== Backups' -A 3 | grep -q $today +heroku pg:backups:download --app $APP_NAME --output=$dump_file +# gzip it +gzip $dump_file +# encrypt the backup file +gpg --yes --passphrase=$PG_BACKUP_KEY --batch -c $dump_file.gz +rm $dump_file.gz + +BACKUP_FILE_NAME="myskillbox-pg-backup-$(date '+%Y-%m-%d_%H.%M').gpg" + +# temporarily set the access key, because we use a different one for the backup and +# the default S3 bucket for Django +AWS_ACCESS_KEY_ID=$BACKUP_AWS_ACCESS_KEY_ID +AWS_SECRET_ACCESS_KEY=$BACKUP_AWS_SECRET_ACCESS_KEY +aws s3 cp $dump_file.gz.gpg "s3://${BACKUP_S3_BUCKET_NAME}/${BACKUP_FILE_NAME}" +rm $dump_file.gz.gpg