78 lines
1.8 KiB
Bash
Executable File
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
|