Listing: pg_dumpall -g #!/bin/bash set -ex LOCKFILE=/tmp/backup.lock # flock verhindert, dass die Sicherung mehrfach parallel gestartet werden kann ( TMP=$(mktemp globals.sql.XXXXXX) flock -n 9 || exit 1; # File Descriptor fuer Schreiben exec 133>"$TMP" # Filedescriptor fuer Lesen exec 134<"$TMP" # Temporäre Datei löschen: Dies sorgt dafür, dass bei Abbruch des Skripts auch keine Dateileiche zurückbleibt rm "$TMP" # Sicherung der globalen Objekte wie Rollen et cetera ... pg_dumpall -g >&133 && cat <&134 > globals-"$(date +%Y%m%d-%H%M%S)".sql # Schließen der Filedeskriptoren exec 3>&- exec 4<&- for DB in `psql -qAtX -c 'SELECT datname FROM pg_database WHERE oid > 16383 AND NOT datistemplate AND datallowconn;'`; do TMP=$(mktemp "${DB}".pg_dump.XXXXXX) # File Descriptor für Schreiben exec 133>"$TMP" # Filedescriptor fuer Lesen exec 134<"$TMP" # Temporäre Datei löschen: Dies sorgt dafür, dass bei Abbruch des Skriptes auch keine Dateileiche # zurückbleibt rm "$TMP" # Dump in Tempdatei schreiben, flock verhindert, dass dies mehrfach gleichzeitig geschieht pg_dump -Fc --compress zstd -d "${DB}" -Fc --verbose >&133 && cat <&134 > "${DB}-$(date +%Y%m%d-%H%M%S)".pg_dump # Schließen der Filedeskriptoren exec 3>&- exec 4<&- done ) 9>"${LOCKFILE}" --