From 931d14ba3d17640ff864336ae918a987968d41b7 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Wed, 30 Apr 2025 17:00:09 +0200 Subject: [PATCH] Update to 2025-04-30 17:00 --- .../templates/post-backup.sh.j2 | 5 +- .../templates/pre-backup.sh.j2 | 74 ++++++++++++------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/roles/postgresql_server/templates/post-backup.sh.j2 b/roles/postgresql_server/templates/post-backup.sh.j2 index 570459b..e81cc7c 100644 --- a/roles/postgresql_server/templates/post-backup.sh.j2 +++ b/roles/postgresql_server/templates/post-backup.sh.j2 @@ -1,6 +1,7 @@ #!/bin/bash -e {% if pg_remove_dump_after_backup %} -rm -f /home/lbkp/pgsql/*.sql* -{% endif %} +rm -rf /home/lbkp/pgsql/* +{% else %} rm -f /home/lbkp/pgsql/*.conf +{% endif %} diff --git a/roles/postgresql_server/templates/pre-backup.sh.j2 b/roles/postgresql_server/templates/pre-backup.sh.j2 index c74af78..0b7718d 100644 --- a/roles/postgresql_server/templates/pre-backup.sh.j2 +++ b/roles/postgresql_server/templates/pre-backup.sh.j2 @@ -4,45 +4,65 @@ set -eo pipefail DEST=/home/lbkp/pgsql -{% if pg_dump_format == 'text' %} -{% set dump_options = '-Fp -Cc' %} -{% set dump_ext = 'sql' %} -{% elif pg_dump_format == 'custom' %} -{% set dump_options = '-Fc' %} -{% set dump_ext = 'sqlc' %} -{% else %} -{% set dump_options = '-F' + pg_dump_format %} -{% set dump_ext = 'dump' %} -{% endif %} +{%- if pg_dump_format == 'text' or pg_dump_format == 'plain' %} + {%- set dump_options = '-Fp' %} + {%- set dump_ext = 'sql' %} +{%- elif pg_dump_format == 'custom' or pg_dump_format == 'c' %} + {%- set dump_options = '-Fc' %} + {%- set dump_ext = 'sqlc' %} +{%- elif pg_dump_format == 'directory' or pg_dump_format == 'd' %} + {%- set dump_options = '-Fd' %} + {%- set dump_ext = '' %} + +# Ensure postgres can reach /home/lbkp/pgsql +setfacl -m u:postgres:x /home/lbkp +mkdir -p ${DEST} +chown postgres:postgres ${DEST} +{%- else %} + {%- set dump_options = '-F' + pg_dump_format %} + {%- set dump_ext = 'dump' %} +{%- endif %} for DB in $(su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/psql -d postgres -qtc 'SELECT datname from pg_database' | grep -vP '^\s+?template[01]$'") do {% if pg_compress_cmd %} -{% if pg_compress_cmd is search('p?xz') %} -{% set comp_ext = 'xz' %} -{% elif pg_compress_cmd is search('p?bzip2') %} -{% set comp_ext = 'bz2' %} -{% elif pg_compress_cmd is search('(pi)?gz') %} -{% set comp_ext = 'gz' %} -{% elif pg_compress_cmd is search('lzop') %} -{% set comp_ext = 'lzo' %} -{% elif pg_compress_cmd is search('lz4') %} -{% set comp_ext = 'lz4' %} -{% elif pg_compress_cmd is search('zst') %} -{% set comp_ext = 'zst' %} -{% else %} -{% set comp_ext = 'z' %} -{% endif %} + {%- if pg_compress_cmd is search('p?xz') %} + {%- set comp_ext = 'xz' %} + {%- elif pg_compress_cmd is search('p?bzip2') %} + {%- set comp_ext = 'bz2' %} + {%- elif pg_compress_cmd is search('(pi)?gz') %} + {%- set comp_ext = 'gz' %} + {%- elif pg_compress_cmd is search('lzop') %} + {%- set comp_ext = 'lzo' %} + {%- elif pg_compress_cmd is search('lz4') %} + {%- set comp_ext = 'lz4' %} + {%- elif pg_compress_cmd is search('zst') %} + {%- set comp_ext = 'zst' %} + {%- else %} + {%- set comp_ext = 'z' %} + {%- endif %} + {%- if pg_dump_format == 'directory' or pg_dump_format == 'd' %} + echo "Dumping $DB to $DEST/$DB" + su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump {{ dump_options }} $DB -f $DEST/$DB" + {%- else %} echo "Dumping $DB to $DEST/$DB.{{ dump_ext }}.{{ comp_ext }}" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump {{ dump_options }} $DB" | /bin/nice -n 10 {{ pg_compress_cmd }} > $DEST/$DB.{{ dump_ext }}.{{ comp_ext }} - echo "Dumping $DB schema to $DEST/$DB.schema.{{ dump_ext }}.{{ comp_ext }}" - su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump --schema-only -Fp $DB" | /bin/nice -n 10 {{ pg_compress_cmd }} > $DEST/$DB.schema.{{ dump_ext }}.{{ comp_ext }} + {%- endif %} + + echo "Dumping $DB schema to $DEST/$DB.schema.sql.{{ comp_ext }}" + su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump --schema-only -Fp $DB" | /bin/nice -n 10 {{ pg_compress_cmd }} > $DEST/$DB.schema.sql.{{ comp_ext }} {% else %} + {%- if pg_dump_format == 'directory' or pg_dump_format == 'd' %} + echo "Dumping $DB to $DEST/$DB" + su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump {{ dump_options }} --compress=0 $DB -f $DEST/$DB" + {%- else %} echo "Dumping $DB to $DEST/$DB.{{ dump_ext }}" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump {{ dump_options }} $DB" > $DEST/$DB.{{ dump_ext }} echo "Dumping $DB schema to $DEST/$DB.schema.sql" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dump --schema-only -Fp $DB" > $DEST/$DB.schema.sql + {%- endif %} {% endif %} + done {% if pg_compress_cmd %} echo "Dumping globals to $DEST/pg_globals.sql.{{ comp_ext }}"