使用shell脚本+Cron任务自动执行postgres数据库备份

思路:先创建一个shell脚本,用于备份pgsql数据库,再使用Cron任务,根据自己需求设置定时任务。

环境:centos7+postgres12.2

1.创建一个根据日期来定义备份文件名的脚本:

 1. 创建db_backup.sh文件
    touch db_backup.sh
 2. 赋予777权限
    chmod -R 777 db_backup.sh

2.对db_backup.sh文件进行编写脚本:

1.编辑db_backup.sh
   vim db_backup.sh
2.db_backup.sh编辑内容
#! /bin/bash
path=/home/postgres/db_back;   //备份路径
if [ ! -d "$path" ];then      //创建备份路径文件
    mkdir $path;
fi
date=`date +%Y%m%d:%H`;       //获取备份日期时间
//'/usr/local/pgsql/bin/pg_dump postgres' pg_dump路径和要备份的数据库名 
ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"| awk 'NR==1{print}');
/usr/local/pgsql/bin/pg_dump postgres -f ${path}backup_$ip-$date.backup  -h 127.0.0.1 -U postgres

3.编辑crontab以创建新的cron任务:

1.crontab -e              //编辑cron定时任务
2. 每周六凌晨五点备份(具体备份时间以自己公司要求为准)
  00   5  *  *  6 root /usr/local/sbin/db_backup.sh      //db_backup.sh文件路径

4 .重启cron定时任务:

systemctl restart crond

5.备份的数据就保存在/home/postgres/db_back目录下。