#!/bin/sh # This script must be run as root (because it su:s to the database # user. Make sure that it can su, ie the data base user has a valid # shell) and must be run locally on the database server. MAJOR=7.3 MINOR=.5 VERSION=$MAJOR$MINOR export VERSION PGUSER=postgres export PGUSER PGGROUP=postgres export PGGROUP PGSQLDIR=/pkg/postgresql/$VERSION/bin export PGSQLDIR PGBACKUPDIR=/pkg/postgresql/backup export PGBACKUPDIR PGDBHOME=/pkg/postgresql/base/$MAJOR export PGDBHOME PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PGSQLDIR export PATH SHOSTNAME=`hostname -s` TIMESTAMP=`date +"%Y-%m-%d_%H:%M"` if [ -e $PGDBHOME/postgresql.conf ] ; then PORT=`grep ^port $PGDBHOME/postgresql.conf | sed -r 's/^[^0-9]+([0-9]+)/\1/'` fi PORT=${PORT:=5432} DUMPFILE=pgdump.$VERSION.$SHOSTNAME.$TIMESTAMP export DUMPFILE if [ ! -d $PGBACKUPDIR ] ; then mkdir -p $PGBACKUPDIR chown $PGUSER.$PGGROUP $PGBACKUPDIR fi su $PGUSER "$PGSQLDIR/pg_dumpall --port=$PORT --verbose> $PGBACKUPDIR/$DUMPFILE" if [ -f $PGBACKUPDIR/$DUMPFILE ] ; then # Compress it gzip -9 $PGBACKUPDIR/$DUMPFILE fi # Do garbage collection su $PGUSER "$PGSQLDIR/vacuumdb --all --port=$PORT --analyze --full > /dev/null"