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           ##