Backup von Postgres-Datenbank

Folgendes Skript erzeugt ein Backup von den globalen Daten einer Postgres-Installation und ausgewählten Datenbanken. Für die Datenbanken wird das tar-Format von pg_dump verwendet. Das hat den Vorteil, daß beim Wiederherstellen Datenbankobjekte umsortiert und ausgelassen werden können. Das tar-Format hat zusätzlich den Vorteil mit Standard-Tools bearbeitet werden zu können, da die Daten-Dateien im Tab-Delimited-Format gespeichert werden.

#!/bin/sh
umask 0077
export PGPASSWORD=`/bin/cat meinepassword-datei`
export PGUSER='postgres'
db=("db1"db2")

# User/Gruppen
pg_dumpall --globals-only |/usr/bin/bzip2 > /backup/postgres/global.sql.bz2
rc=$?
if (($rc!=0))
        then echo "Fehler bei pg_dumpall";
fi;
for i in ${db[@]}
do
        /usr/bin/pg_dump -Ft  $i|/usr/bin/bzip2 > /backup/postgres/$i.tar.bz2;
        if (($rc!=0))
                then echo "Fehler bei pg_dump: $i";
        fi;
done
export PGPASSWORD=''