postgres/OLD/dump_all_pg_dbs.sh.BAK
2017-02-21 02:33:47 +01:00

78 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
BACKUP_BASE_DIR="/backup/psql"
mkdir -p $BACKUP_BASE_DIR
PSQL_BIN_DIR=/usr/local/pgsql/bin
days=30
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11
# -- erstelle liste der datenbanken
# --
listfile=${BACKUP_BASE_DIR}/dblist-`date +"%Y%m%d-%H%M"`.txt
echo -e "Stand: `date +\"%d.%m.%Y %H:%Mh\"`\n" > $listfile
su postgres -c"${PSQL_BIN_DIR}/psql -l" >> $listfile
# -- erstelle dump zum wiederherstellen der
# -- user und datenbanken.
# --
dbusers_databases_file=${BACKUP_BASE_DIR}/db_users_databases-`date +"%Y%m%d-%H%M"`.sql
cat<<EOF > $dbusers_databases_file
--
-- restore user and databasedefinitions (no data) for db-cluster
-- su postgres -c"psql -f $dbusers_databases_file template1"
--
EOF
su postgres -c"${PSQL_BIN_DIR}/pg_dumpall -g" >> $dbusers_databases_file
cat<<EOF >> $dbusers_databases_file
--
-- Database creation
--
EOF
su postgres -c"${PSQL_BIN_DIR}/pg_dumpall -s" | grep "CREATE DATABASE" >> $dbusers_databases_file
# --
# -- Wiederherstellung der user und datenbanken (nur definitionen - keine daten )
# -- su postgres -c"psql -f $dbusers_databases_file template1"
databases=`su postgres -c"${PSQL_BIN_DIR}/psql -l -t" | grep -v -e"^$" | awk '{print$1}'`
# -- erstelle dump dateien fer jede einzelne datenbank
# --
for db in $databases ; do
BACKUP_DIR=${BACKUP_BASE_DIR}/$db
mkdir -p $BACKUP_DIR
cat<<EOF > ${BACKUP_DIR}/dump_${db}-${DATE}.sql
--
-- restore data for databas $db:
-- su postgres -c"psql -f ${BACKUP_DIR}/dump_${db}-${DATE}.sql ${db}"
--
EOF
DATE=`date +"%Y%m%d-%H%M"`
su postgres -c"${PSQL_BIN_DIR}/pg_dump -c $db" >> ${BACKUP_DIR}/dump_${db}-${DATE}.sql
done
# delete all older than $days days
#
/usr/bin/find $BACKUP_DIR -type f -mtime +${days} -exec /bin/rm {} \;
exit 0