aboutsummaryrefslogtreecommitdiff
path: root/databases/postgresql91-server/files/502.pgsql
diff options
context:
space:
mode:
Diffstat (limited to 'databases/postgresql91-server/files/502.pgsql')
-rw-r--r--databases/postgresql91-server/files/502.pgsql130
1 files changed, 69 insertions, 61 deletions
diff --git a/databases/postgresql91-server/files/502.pgsql b/databases/postgresql91-server/files/502.pgsql
index 84cdb9b5ad45..a1cf9ba4f2ee 100644
--- a/databases/postgresql91-server/files/502.pgsql
+++ b/databases/postgresql91-server/files/502.pgsql
@@ -11,79 +11,87 @@
# In public domain, do what you like with it,
# and use it at your own risk... :)
#
-######################################################################
-#
-# If you like to tweak the settings of the variables PGBACKUPDIR and
-# PGDUMP_ARGS, you should preferably set them in ~pgsql/.profile.
-# If set there, that setting will override the defaults here.
+
+# Define these variables in either /etc/periodic.conf or
+# /etc/periodic.conf.local to override the default values.
#
-######################################################################
+# daily_pgsql_backup_enable="YES" # do backup
+# daily_pgsql_vacuum_enable="YES" # do vacuum
+
+daily_pgsql_vaccum_enable="NO"
+daily_pgsql_backup_enable="NO"
-DIR=`dirname $0`
-progname=`basename $0`
-PRG=`cd $DIR; pwd `/$progname
+daily_pgsql_vacuum_args="-z"
+daily_pgsql_pgdump_args="-b -F c"
+# backupdir is relative to ~pgsql home directory unless it begins with a slash:
+daily_pgsql_backupdir="~pgsql/backups"
+daily_pgsql_savedays="7"
-# Run as user pgsql
-if [ `id -un` != pgsql ]; then
- su -l pgsql -c ${PRG}
- exit $?
+# If there is a global system configuration file, suck it in.
+#
+if [ -r /etc/defaults/periodic.conf ]
+then
+ . /etc/defaults/periodic.conf
+ source_periodic_confs
fi
-# arguments to pg_dump
-PGDUMP_ARGS=${PGDUMP_ARGS:-"-b -F c"}
+# allow '~´ in dir name
+eval backupdir=${daily_pgsql_backupdir}
-# The directory where the backups will reside.
-# ${HOME} is pgsql's home directory
-PGBACKUPDIR=${PGBACKUPDIR:-${HOME}/backups}
+rc=0
-# If you want to keep a history of database backups, set
-# PGBACKUP_SAVE_DAYS in ~pgsql/.profile to the number of days. This is
-# used as "find ... -mtime +${PGBACKUP_SAVE_DAYS} -delete", see below
-PGBACKUP_SAVE_DAYS=${PGBACKUP_SAVE_DAYS:-7}
+case "$daily_pgsql_backup_enable" in
+ [Yy][Ee][Ss])
-# PGBACKUPDIR must be writeable by user pgsql
-# ~pgsql is just that under normal circumstances,
-# but this might not be where you want the backups...
-if [ ! -d ${PGBACKUPDIR} ] ; then
- echo Creating ${PGBACKUPDIR}
- mkdir ${PGBACKUPDIR}
- chmod 700 ${PGBACKUPDIR}
-fi
+ # daily_pgsql_backupdir must be writeable by user pgsql
+ # ~pgsql is just that under normal circumstances,
+ # but this might not be where you want the backups...
+ if [ ! -d ${backupdir} ] ; then
+ echo Creating ${backupdir}
+ mkdir ${backupdir}; chmod 700 ${backupdir}; chown pgsql ${backupdir}
+ fi
-echo
-echo "PostgreSQL maintenance"
+ echo
+ echo "PostgreSQL maintenance"
-# Protect the data
-umask 077
-dbnames=`psql -q -t -A -d template1 -c "SELECT datname FROM pg_database WHERE datname != 'template0'"`
-rc=$?
-now=`date "+%Y-%m-%dT%H:%M:%S"`
-file=${PGBACKUPDIR}/pgglobals_${now}
-pg_dumpall -g | gzip -9 > ${file}.gz
-for db in ${dbnames}; do
- echo -n " $db"
- file=${PGBACKUPDIR}/pgdump_${db}_${now}
- pg_dump ${PGDUMP_ARGS} -f ${file} ${db}
- [ $? -gt 0 ] && rc=3
-done
+ # Protect the data
+ umask 077
+ dbnames=`su -l pgsql -c "psql -q -t -A -d template1 -c SELECT\ datname\ FROM\ pg_database\ WHERE\ datname!=\'template0\'"`
+ rc=$?
+ now=`date "+%Y-%m-%dT%H:%M:%S"`
+ file=${daily_pgsql_backupdir}/pgglobals_${now}
+ su -l pgsql -c "pg_dumpall -g | gzip -9 > ${file}.gz"
+ for db in ${dbnames}; do
+ echo -n " $db"
+ file=${backupdir}/pgdump_${db}_${now}
+ su -l pgsql -c "pg_dump ${daily_pgsql_pgdump_args} -f ${file} ${db}"
+ [ $? -gt 0 ] && rc=3
+ done
-if [ $rc -gt 0 ]; then
- echo
- echo "Errors were reported during backup."
-fi
+ if [ $rc -gt 0 ]; then
+ echo
+ echo "Errors were reported during backup."
+ fi
-echo
-echo "vacuuming..."
-vacuumdb -a -z -q
-if [ $? -gt 0 ]
-then
- echo
- echo "Errors were reported during vacuum."
- rc=3
-fi
+ # cleaning up old data
+ find ${backupdir} \( -name 'pgdump_*' -o -name 'pgglobals_*' \) \
+ -a -mtime +${daily_pgsql_savedays} -delete
+ ;;
+esac
+
+case "$daily_pgsql_vacuum_enable" in
+ [Yy][Ee][Ss])
-# cleaning up old data
-find ${PGBACKUPDIR} \( -name 'pgdump_*' -o -name 'pgglobals_*' \) \
- -a -mtime +${PGBACKUP_SAVE_DAYS} -delete
+ echo
+ echo "vacuuming..."
+ su -l pgsql -c "vacuumdb -a -q ${daily_pgsql_vacuum_args}"
+ if [ $? -gt 0 ]
+ then
+ echo
+ echo "Errors were reported during vacuum."
+ rc=3
+ fi
+ ;;
+esac
exit $rc