43 lines
1.5 KiB
Smarty
43 lines
1.5 KiB
Smarty
#!/bin/sh
|
|
|
|
# vim: syntax=sh
|
|
|
|
set -euo pipefail
|
|
|
|
umask 0077
|
|
DEST=/backup/dumps
|
|
mkdir -p ${DEST}
|
|
|
|
export ZSTD_CLEVEL=[[ .pg.backup.dumps.compression ]]
|
|
export ZSTD_NBTHREADS=0
|
|
|
|
for DB in $(psql -d postgres -qtc "SELECT datname FROM pg_catalog.pg_database WHERE datallowconn IS TRUE AND datname NOT IN ('template0', 'template1');"); do
|
|
echo "Removing previous dumps"
|
|
rm -rf ${DEST}/${DB}*
|
|
|
|
[[- if .pg.backup.dumps.format | regexp.Match "^p(lain)?$" ]]
|
|
echo "Dumping ${DB} to ${DEST}/${DB}.sql.zst in plain format (compressed with zstd)"
|
|
pg_dump --format=plain ${DB} | zstd -o ${DEST}/${DB}.sql.zst
|
|
|
|
[[- else if .pg.backup.dumps.format | regexp.Match "^d(irectory)?$" ]]
|
|
echo "Dumping ${DB} to ${DEST}/${DB} in directory format"
|
|
mkdir -p ${DEST}/${DB}
|
|
pg_dump --format=directory -Z[[ .pg.backup.dumps.compression ]] -j4 --file=${DEST}/${DB} ${DB}
|
|
|
|
[[- else ]]
|
|
echo "Dumping ${DB} to ${DEST}/${DB}.[[ .pg.backup.dumps.format ]] in [[ .pg.backup.dumps.format ]] format"
|
|
pg_dump --format=[[ .pg.backup.dumps.format ]] --compress=[[ .pg.backup.dumps.compression ]] --file=${DEST}/${DB}.[[ .pg.backup.dumps.format ]] ${DB}
|
|
|
|
[[- end ]]
|
|
|
|
echo "Dumping ${DB} schema to ${DEST}/${DB}.schema.sql"
|
|
pg_dump --schema-only --format=plain ${DB} | zstd -o ${DEST}/${DB}.schema.sql.zst
|
|
done
|
|
|
|
rm -f ${DEST}/pg_globals.sql ${DEST}/pg_schema.sql
|
|
echo "Dumping globals to ${DEST}/pg_globals.sql"
|
|
pg_dumpall --globals-only | zstd -o ${DEST}/pg_globals.sql
|
|
echo "Dumping all schemas to ${DEST}/pg_schema.sql"
|
|
pg_dumpall --schema-only | zstd -o ${DEST}/pg_schema.sql
|
|
|