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)中是我自己做测试的备份脚本。