备份oracle数据脚本

前言

纪录下自己平时写的脚本,刚写了个定时备份oracle数据库的脚本,没用ogg啥的复杂玩意,exp加上一堆脚本,超过7次时删除之前的,自动拷贝本地备份数据到远端另外一个机器,并且删除远端7天前的备份数据

备份脚本

$ cat backup.sh
#!/bin/bash
dirname $0
cd `dirname $0`
WORKDIR=`pwd`

echo "[backup start] $data +"%Y-%m-%d %H:%M:%S" >> $WORKDIR/backup.sh.log

###remove more then 7days backup dirs on remote vm
ssh root@10.161.10.129 "find /data/oracle_backup/ -ctime +7 | xargs rm -rf" #提前做好了免密钥登陆

###ensure local backup dirs num less then 7
mkdir -p backup
DIRSNUM=`ls -A $WORKDIR/backup | wc -l`
DELNUM=`expr $DIRSNUM - 6`
DELNUM=$(($DELNUM<0?0:%DELNUM))

rm -rf `ls -At $WORKDIR/backup | awk '{print i$0}' i=$WORKDIR/backup/ | tail -n $DELNUM`

DIRNAME=$(date "+%Y-%m-%d-%H-%M)
if [ ! -d $WORKDIR/backup/$DIRNAME ];then
    mkdir $WORKDIR/backup/$DIRNAME
    echo "[backup   dir] $WORKDIR/backup/$DIRNAME" >> $WORKDIR/backup.sh.log
fi

###start to backup
source /home/oracle/.bash_profile #根据自己需要 也可以直接export oracle的一些参数
exp ***/**** file=$WORKDIR/backup/$DIRNAME/$(date +"%Y%m%d%H%M).dmp log=$WORKDIR/backup/$DIRNAME//$(date +"%Y%m%d%H%M).log

if [ $? -ne 0];then
    echo  "[backup error] $data +"%Y-%m-%d %H:%M:%S" >> $WORKDIR/backup.sh.log
fi
###scp to remote vm
scp -r $WORKDIR/backup/$DIRNAME root@10.161.10.129:/data/oracle_backup/
echo  "[backup end] $data +"%Y-%m-%d %H:%M:%S" >> $WORKDIR/backup.sh.log
$ chmod +x backup.sh

定时任务

$ crontab -e
0 2,14 * * * /home/oracle/backup.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值