#!/bin/sh umask 077 if [ `whoami` != postgres ]; then echo "ERR: Script needs to be run as postgres user" 1>&2 exit 1 fi DESTDIR="<%= @datadir %>" MAXAGE="<%= @maxage %>" DATE=`date "+%Y-%m-%d"` if [ ! -d ${DESTDIR} ]; then echo "ERR: PostgreSQL backup directory [${DESTDIR}] does not exist" 1>&2 exit 1 fi cd ${DESTDIR} && { find . -xdev -mindepth 2 -maxdepth 2 -type f -mtime +7 -execdir rm -f -- {} \; find . -xdev -depth -mindepth 1 -maxdepth 1 -type d -empty -execdir rmdir -- {} \; } DESTDIR=${DESTDIR}/${DATE} mkdir -p ${DESTDIR} for db in `psql -l -t | sed -n 's/^ \([^ ]\+\) .*/\1/p'`; do case ${db} in template*) continue ;; esac pg_dump ${db} | gzip > ${DESTDIR}/${db}.${DATE}.gz done