linux 下利用crontab实现自动逻辑备份
以我的测试环境为例,此方法主要是限于在本机执行,如果要在其他机器执行需要修改备份脚本。
首先建立备份目录:
[root@founder14 oracle]# mkdir backup
给备份目录授权
[root@founder14 oracle]# chmod +777 backup
进入备份目录
[root@founder14 oracle]# cd backup
[root@founder14 backup]#
建立备份脚本
vi backup.sh
输入以下文本
#tabase info此处为数据库用户名、密码以及备份目录的变量这些变量是可用户进行修改的
DB_USER="wzzf"
DB_PASS="wzzf"
BACK_DIR="/home/oracle/backup"
# Others vars此处是数据库备份时间变量以及目录变量,这些变量基本不用修改,请拷贝过去
YEAR=`date +%Y`
MONTH=`date +%m`
DATE=`date +%Y%m%d_%H:%M:%S`
BACK_HOME=$BACK_DIR/$YEAR/$MONTH
#环境变量 相关的环境变量请拷贝过来,可能会和大家所使用的环境变量不同,但请都拷贝进来,执行脚本的时候要用,环境变量每台机器不同,请查看oracle 用户下面.bash_profile
export ORACLE_BASE=/opt/ora9
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_SID=founder
export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
# 备份脚本 由于是本机备份,所以不用输入tns名称
mkdir $BACK_DIR/$YEAR
mkdir $BACK_DIR/$YEAR/$MONTH
$ORACLE_HOME/bin/exp $DB_USER/$DB_PASS file = $BACK_HOME/$DB_USER$DATE.dmp
然后保存backup.sh
给脚本授权:
[root@founder14 backup]# chmod +777 backup.sh
设置crontab计划任务
[root@founder14 backup]# vi /etc/crontab
在文件的最后加入下列文本:
15 15 * * * oracle /home/oracle/backup/backup.sh
此命令的意思是在每天的15点15分使用oracle用户执行脚本/home/oracle/backup/backup.sh
修改第一个域的参数会改变执行的分钟,修改第二个参数会改变执行的小时,修改,修改第三个参数会修改执行的日期,修改第四个参数会修改执行的月份,修改第五个参数会修改执行的星期,下面是Crontab文件格式简介:
crontab文件有六个域,每个域之间用空格或者Tab键分开,前五个域都是整数或者*,格式如下(括号里面是取值范围):
分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-6) 要执行的命令
其中星期取值0指星期日,其它取值递推。前面五个域,每个域都可以用*表示所有合法的值,或者用一个列表列出合法的值,各值之间用“,”隔开,也可以用“-”表示一个范围。
至此linux进行自动备份的脚本设置完成,系统会在你设定的时间进行自动备份。附件(backup.sh)中是我自己做测试的备份脚本。