#!/bin/sh set -eo pipefail DEST=/home/lbkp/pgsql {%- 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_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 }} {%- 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 }}" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dumpall --globals-only" | /bin/nice -n 10 {{ pg_compress_cmd }} > $DEST/pg_globals.sql.{{ comp_ext }} echo "Dumping all schemas to $DEST/pg_schema.sql.{{ comp_ext }}" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dumpall --schema-only" | /bin/nice -n 10 {{ pg_compress_cmd }} > $DEST/pg_schema.sql.{{ comp_ext }} {% else %} echo "Dumping globals to $DEST/pg_globals.sql" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dumpall --globals-only" > $DEST/pg_globals.sql echo "Dumping all schemas to $DEST/pg_schema.sql" su - postgres -c "{{ (pg_version != 'default') | ternary('/usr/pgsql-' + pg_version | string,'') }}/bin/pg_dumpall --schema-only" > $DEST/pg_schema.sql {% endif %} echo "Dumping config to $DEST" cp -a /var/lib/pgsql/{{ (pg_version != 'default') | ternary(pg_version | string + '/','') }}data/postgresql.conf $DEST/ cp -a /var/lib/pgsql/{{ (pg_version != 'default') | ternary(pg_version | string + '/','') }}data/pg_hba.conf $DEST/