#!/bin/bash PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" DIR="/DATA/Backup/PostgreSQL" USER="postgres" ##PASS="gentoo" if [ -z $1 ]; then echo "database name missing! use --all for all db's" exit 1; elif [ $1 = '--all' ]; then echo "full backup" ## for i in `psql -U $USER -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`; do for i in $(psql -U $USER -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'); do if [ "$i" != "postgres" ] && [ "$i" != "template0" ] && [ "$i" != "template1" ] && [ "$i" != "template_postgis" ]; then if test -f ${DIR}/${i}.sql; then echo "Move ${DIR}/${i}.sql to ${DIR}/${i}.sql.1" mv ${DIR}/${i}.sql ${DIR}/${i}.sql.1 fi echo "dump ${i} to ${DIR}/${i}.sql" pg_dump -U $USER $i > ${DIR}/${i}.sql chmod 600 ${DIR}/${i}.sql fi done; elif [ -n $1 ]; then echo "Starting backup of $1" if test -f $DIR/$1.sql; then echo "Move $DIR/$1.sql to $DIR/$1.sql.1" mv ${DIR}/${1}.sql ${DIR}/${1}.sql.1 fi pg_dump -U $USER $1 > ${DIR}/${1}.sql chmod 600 ${DIR}/${1}.sql fi echo "Done" exit 0;