postgreSql定时备份数据脚本
- 创建.pgpass文件
- 创建备份执行shell脚本
- 创建定时任务
创建.pgpass文件
ps: 必须创建在
~/目录下否则无法读取
# 每个参数需要使用`:`进行分割
# hostname:port:database:username:passowrd
*:5432:*:postgres:Hnzm&soft@123@$#`
创建定时shell脚本
#!/bin/sh
# pgsql备份使用的shell脚本
#includ <studio.h>
#includ <time.h>
#includ <stdlib.h>
#includ <sys/time.h>
dir="/opt/database/pgsql_backup"
log="${dir}/pgsql-echo.log"
# 定义备份目录路径
echo $(date +"%Y-%m-%d %H:%M:%S")"脚本执行开始">> $log;
# 创建的目录名
path="${dir}/$(date '+%Y%m%d')"
if [ ! -d $path ]; then
echo "文件不存在! 创建文件夹" >> $log
sudo mkdir $path
fi
pg_dump -h 127.0.0.1 -p 5432 -U postgres -w dbname=dbname > ${path}/dbname.bak
echo "执行结束" >> $log
echo "开始移除7天之前的备份数据" >> $log
# 移除几天前就将 7 改为几天
clearDate=$(date -d "7 day ago "$date '+%Y%m%d');
for dir in "$backup_dir"/*/;
do
clearDir=$(basename $dir)
if [ $clearDir -lt $clearDate ]; then
echo "移除 ${clearDir} 目录">> $log;
rm -rf "$dir"
fi
done
echo "结束删除之前备份数据" >> $log
echo $(date +"%Y-%m-%d %H:%M:%S")"脚本执行结束">> $log;
创建定时任务
# 输入下面命令可以进到编辑页面
crontab -e
# 将下面这个定时任务写进去
00 1 * * * '要执行的shell全路径' > /usr/local/mysql-back/back-err.log &
# 下面命令可以查看当前有的定时任务
crontab -l
浙公网安备 33010602011771号