shell脚本备份postgres SQL数据库(同台服务器备份脚本)

#postgres数据备份shell脚本
#!/bin/bash
folder=/home/data/backup/pgdatabackup;
if [ ! -d folder ];then
mkdir -p "$folder";
fi
cd $folder;
day=`date +%Y%m%d`;
FILENAME_BEFORE=export_bak_;
FILENAME=$FILENAME_BEFORE$day.dmp;
mkdir -p "$day";
#cd $day
#host=127.0.0.1
#port=5432
user=XXX;
#password=XXXX
db=apidbs;
backDay=1;
--获取容器名称
container=$(docker ps | grep 容器名称 | sed -n 1p | awk '{print $1}');
echo $container'开始postgres备份';
#docker exec -i $container /bin/bash -c  'PASSWORD='$password' 
/usr/lib/postgresql/15/bin/pg_dump -Fc -p '$port' -U '$user' -d '$db'>/var/lib/postgresql/data/'$FILENAME''
--进入docker容器并导出数据库备份文件
docker exec -i $container /bin/bash -c 'pg_dumpall -U '$user' > /var/lib/postgresql/data/'$FILENAME'';
--从docker容器复制脚本到指定目录
docker cp $container:/var/lib/postgresql/data/$FILENAME  $folder/$day/$FILENAME;
--docker删除脚本文件
docker exec -i $container /bin/bash -c 'rm -rf /var/lib/postgresql/data/'$FILENAME'';
echo $container'结束postgres备份';
echo "删除"$backDay  "天前的 数据库备份文件!开始";
--查询获取n天前的备份文件并删除
for filePath in `find $folder -name $FILENAME_BEFORE"*" -mtime $backDay `;
do
    # 上级目录
    upperLevelDir=$(dirname $filePath);
    if [  -d $upperLevelDir ];then
      echo "上级目录"$upperLevelDir;
      rm -rf $upperLevelDir;
      echo  $backDay "天前的数据库备份文件删除完毕!";
    fi;
done;
echo "删除"$backDay  "天前的 数据库备份文件!结束";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值