前言
纪录下自己平时写的脚本,刚写了个定时备份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