linux中postgres的备份脚本

#!/bin/sh
#############################################################################
#创建$HOME/script目录,用于存放备份脚本和备份相关的文件。                   #
#创建$HOME/wmpay_bak 目录,用于存放数据库的备份文件。                       #
#创建$HOME/wmpay_archive_log目录,用于存放postgres数据库的归档日志。        #
#############################################################################
#创建$HOME/script/wmpay_bak_file目录,用于存放wmpay_bak的压缩打包文件。     #
#创建$HOME/script/wmpay_bak_file_tmp目录,用于存放当天备份的压缩包。        #
#创建$HOME/script/wmpay_archive_log_bak目录,用于归档日志的备份。           #
#创建$HOME/script/wmpay_archive_log_bak/archive_status                      #
#############################################################################


#变量设定
PGDATA=$HOME/pgdata
BACKBASE=$HOME/wmpay_bak
ARCHIVE=$HOME/wmpay_archive_log
ARCHIVE_BAK=$HOME/script/wmpay_archive_log_bak
SCRIPT=$HOME/script
BAK_FILE_TMP=$SCRIPT/wmpay_bak_file_tmp
BAK_LOG=$BAK_FILE_TMP/wmpay$(date +%Y%m%d)_bak.log
#把执行结果放入日志中
exec 1>>$BAK_LOG 2>&1
#############################################################################
#做备份$HOME/wmpay_bak
rm -rf $BACKBASE/*
sleep 1s
psql -d wmpay -c "select PG_START_BACKUP('test_backup')"
cp -R $PGDATA/* $BACKBASE
psql -d wmpay -c "select PG_STOP_BACKUP()"
psql -d wmpay -c "select pg_switch_xlog()"

#############################################################################
#把备份wmpay_bak,压缩到$BAK_FILE_TMP
tar zcvf $BAK_FILE_TMP/wmpay$(date "+%Y%m%d%H%M%S")online_bak.tar.gz $BACKBASE

#############################################################################
#用ftp把$BAK_FILE_TMP路径下的文件移动到ftp的/POSTGRES_BAK/wmpay_bak_file
sleep 1s
ftp -i -n -v << FTPIT
open 192.168.1.96
user ftp123 ftp123
binary
cd /POSTGRES_BAK/wmpay_bak_file
lcd /home/postgres/script/wmpay_bak_file_tmp
mput *bak.tar.gz *bak.log
by
FTPIT

#############################################################################
#把昨天的归档日志复制到$ARCHIVE_BAK
sleep 1s
find $ARCHIVE -name "*" -type f -mmin -$(expr `date +%H` \* 60 + `date +%M` + 1440 \* 1) -a -mmin +$(expr `date +%H` \* 60 + `date +%M`) -exec cp {} $ARCHIVE_BAK \;
find $ARCHIVE/archive_status -name "*" -type f  -exec cp {} $ARCHIVE_BAK/archive_status \;

#############################################################################
#把$BAK_FILE_TMP路径下的文件移动到$SCRIPT/wmpay_bak_file保存。
sleep 1s
mv $BAK_FILE_TMP/* $SCRIPT/wmpay_bak_file

#############################################################################
#删除$SCRIPT/wmpay_bak_file路径下存放的8天以前的备份文件。
sleep 1s
find $SCRIPT/wmpay_bak_file -name "*" -type f -mtime +8 -exec rm -rf {} \;

#############################################################################
#删除$ARCHIVE路径下存放的8天以前的归档日志。
sleep 1s
find $ARCHIVE -name "*" -type f -mtime +8 -exec rm -rf {} \;
#############################################################################
#删除$SCRIPT/wmpay_archive_log_bak路径下存放的8天以前的归档日志的备份。
sleep 1s
find $ARCHIVE_BAK -name "*" -type f -mtime +8 -exec rm -rf {} \;

你可能感兴趣的:(postgres)