diff --git a/roles/backup/templates/s3backup.sh b/roles/backup/templates/s3backup.sh index 3551034..1a8cabb 100644 --- a/roles/backup/templates/s3backup.sh +++ b/roles/backup/templates/s3backup.sh @@ -73,6 +73,32 @@ backup() { fi } +# Dump Postgres DBs, if possible +if command -v psql > /dev/null 2>&1; then + # Populate a list of databases + declare -a DATABASES + while read line; do + DATABASES+=("$line") + done < <(sudo -u postgres psql -t -A -c "SELECT datname FROM pg_database where datname not in ('template0', 'template1', 'postgres');" 2>/dev/null) + + # pgdump all DBs, compress them, and pipe straight up to S3 + echo "Commencing backup on the following databases:" + for dir in "${DATABASES[@]}"; do + echo "- $dir" + done + echo "Will upload resultant backups to {{ backup_s3_bucket }}" + for db in "${DATABASES[@]}"; do + echo "Backing up $db" + sudo -u postgres pg_dump "$db" \ + | gzip -v9 \ + | aws s3 cp - \ +{% if backup_s3_aws_endpoint_url is defined %} + --endpoint-url="{{ backup_s3_aws_endpoint_url }}" \ +{% endif %} + "s3://{{ backup_s3_bucket }}/$HOSTNAME/pgdump/$db/$(date "+{{ backup_dateformat }}").pgsql.gz" + done +fi + # Tar up all items in the backup list, recursively, and pipe them straight # up to S3 if [ -n "${DIRS[*]}" ]; then @@ -106,29 +132,3 @@ if [ -n "${DIRS[*]}" ]; then done fi fi - -# Dump Postgres DBs, if possible -if command -v psql > /dev/null 2>&1; then - # Populate a list of databases - declare -a DATABASES - while read line; do - DATABASES+=("$line") - done < <(sudo -u postgres psql -t -A -c "SELECT datname FROM pg_database where datname not in ('template0', 'template1', 'postgres');" 2>/dev/null) - - # pgdump all DBs, compress them, and pipe straight up to S3 - echo "Commencing backup on the following databases:" - for dir in "${DATABASES[@]}"; do - echo "- $dir" - done - echo "Will upload resultant backups to {{ backup_s3_bucket }}" - for db in "${DATABASES[@]}"; do - echo "Backing up $db" - sudo -u postgres pg_dump "$db" \ - | gzip -v9 \ - | aws s3 cp - \ -{% if backup_s3_aws_endpoint_url is defined %} - --endpoint-url="{{ backup_s3_aws_endpoint_url }}" \ -{% endif %} - "s3://{{ backup_s3_bucket }}/$HOSTNAME/pgdump/$db/$(date "+{{ backup_dateformat }}").pgsql.gz" - done -fi