skillbox/bin/pg-backup-to-s3

28 lines
965 B
Bash
Executable File

#!/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