Linux平台下Oracle文件的自动备份与FTP自动上传

浏览: 4426
环境说明
操作系统:Centos
环境:Oracle11g
FTP: 192.168.148.121 用户:dell 密码:123
解决方案:利用Linux crontab-自动化的任务 实现自动备份

详细的操作步骤如下
1、完成 Linux下自动备份Oracle数据库详细操作步骤 http://www.flybi.net/article/35
2、创建shell文件 tianshanbaktoftp.sh
(详细的代码解释)   #!/bin/sh
FTP_IP=192.168.148.121 #ftp地址
FTP_USER=dell #ftp用户名
FTP_PASS=123 #ftp密码
FTP_backup=/oraclebackup #ftp上存放备份文件的目录,需要先在FTP上面建好
BK_DR=/backup/oracledata/tsbak #备份文件存放路径
DB_DR=/backup/oracledata/ts #已经存在文件
DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份
LINUX_USER=root #系统用户名
date=` date +%Y%m%d `
tar zcvf $BK_DR/TianShan$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改备份数据库文件的所有者
find $BK_DR -name "TianShan*" -type f -mtime +$DAYS -exec rm {} \; #删除7天前的备份文件(注意:{} \;中间有空格)
deldate=` date -d -7day +%Y%m%d ` #删除ftp服务器空间7天前的备份
ftp -i -v -n $FTP_IP << END #打开ftp服务器。21为ftp端口 <<END 和最后的 END:术语叫:当前文档here documents. here document 就是一段特殊目的的代码块
【#它使用I/O重定向的形式来将一个命令序列传递到一个交互程序或者命令中,比如ftp、cat,或者ex文本编辑器. 本句可以理解从<<END开始以非对话模式的ftp连接,直到输入END为止的所有命令. 当然END这个名字是可以随便取的,不一定必须是END,可以取其它的名字。 】
user $FTP_USER $FTP_PASS #用户名、密码
binary #设置二进制传输
cd $FTP_backup #进入ftp目录
lcd $BK_DR #列出本地目录
mput TianShan$date.tar.gz TianShan$date.tar.gz #上传目录中的文件
mdelete TianShan$deldate.tar.gz TianShan$deldate.tar.gz #删除ftp空间7天前的备份
bye
END

如果手动执行 sh没有问题的话,而放到crontab 执行报错话,请把上面的注释删掉,在执行试试。可以直接用下面【【】】里面的代码即可。
【【 #!/bin/sh
FTP_IP=192.168.148.121
FTP_USER=dell
FTP_PASS=123
FTP_backup=/oraclebackup
BK_DR=/backup/oracledata/tsbak
DB_DR=/backup/oracledata/ts
DAYS=7
LINUX_USER=root
date=` date +%Y%m%d `
tar zcvf $BK_DR/TianShan$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR
find $BK_DR -name "TianShan*" -type f -mtime +$DAYS -exec rm {} \;
deldate=` date -d -7day +%Y%m%d `
ftp -i -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
binary
cd $FTP_backup
lcd $BK_DR
mput TianShan$date.tar.gz
mdelete TianShan$deldate.tar.gz
bye
END

】】


3、修改文件属性,使其可执行
 chmod +x /backup/oracledata/tsbak/tianshanbaktoftp.sh

4、修改/etc/crontab vi /etc/crontab 最下面添加
 5 2 [i] [/i] * root /backup/oracledata/tsbak/tianshanbaktoftp.sh  >> /backup/oracledata/tsbak/mylog.log 2>&1   #表示每天凌晨2点5分执行备份,并添加对应日志记录

5、重新启动crond使设置生效
  service crond restart #启动 
推荐 1
本文由 梁勇 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册