需要配置postgres的无密码登录 配置文件pg_hba.conf, 供参考
host all root 127.0.0.1/32 trust
#!/bin/bash
#auto backup pgsql every database;
#author firxiao
#date 2014.06.11
BACKUPDIR='/backup' ##备份目录
HOST='' ##主机名字 为空时 默认为localhost
USER='' ##用户 为空时 默认为执行脚本的用户
if [ ! $HOST ]; then ##判断HOST不存在
HOST="localhost"
fi;
if [ ! $USER ]; then ##判断USER是否存在
USER=$(whoami)
fi;
DATE=`date +%Y%m%d` ##当前日期
M=`date +%Y%m` ##当前月份
function createdir() ##判断备份目录是否存在不存在则创建
{
while [ ! -d $BACKUPDIR ]; do
echo "$BACKUPDIR is not exits, will create now"
mkdir -p $BACKUPDIR
done
cd $BACKUPDIR
while [ ! -d "$DATE" ];do
mkdir $DATE
done
while [ ! -d "$M" ];do
mkdir $M
done
}
function showdatabase() ##查看pgsql中库列表
{
psql -h $HOST -U $USER postgres -At -c "select datname from pg_database where not datistemplate and datallowconn order by datname;" >/tmp/pglist
}
function backup() ##备份并移到当前月份文件夹
{
while read LINE
do
pg_dump -h $HOST -U $USER -O -c $LINE > $DATE/$LINE$DATE.sql
done < /tmp/pglist
pg_dumpall -h $HOST -U $USER -c > $DATE/all$DATE.sql
tar cvfj $DATE.tar.gz $DATE
rm -rf $DATE
mv $DATE.tar.gz $M/
}
createdir && showdatabase && backup ##开始备份