postgressql备份脚本

  需要配置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           ##开始备份


你可能感兴趣的:(postgres,PostgreSQL备份,pgsql备份,备份脚本)