之前忙着找实习和期末考试也好久没更新了,现在终于算稳定下来了,下午写了个小脚本,可以每天自动备份Linux服务器上的oracle数据库,然后远程复制到另一个服务器,分享一下
脚本主要用到了expect来进行自动输入密码和crontab设置脚本定时运行
backup.sh进行数据库的备份,按日期生成一个备份文件,copy.sh进行备份文件的远程复制
背景置灰的为Linux命令
安装expect
首先安装tcl(下载地址:http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz)
解压
tar -zxvf tcl8.4.11-src.tar.gz
cd tcl8.4.11/unix/
./configure
make && make install
安装expect(下载地址:http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download)
tar -zxvf expect5.45.tar.gz
cd expect5.45
./configure --with-tclinclude=/tmp/tcl8.4.11/generic--with-tclconfig=/usr/local/lib/
make && make install
backup.sh
图中Oracle数据库备份语句为:
‘expdp 用户名/密码 directory=文件夹 dumpfile=文件名称-`date+20%y-%m-%d`.dmp schemas= ’
备份生成*.dmp文件后执行copy.sh脚本进行远程复制
copy.sh
使用scp命令进行远程复制,这里直接使用scp不能匹配通配符,会报不存在*.dmp的错误,在命令前加上bash -c即可
使用expect解决自动输入远程密码问题,检测密码、password、yes/no等字段来匹配输入内容。
crontab
使用crontab来设置脚本定时执行
crontab -e
这样就设置为了每天1时30分执行 backup.sh脚本
linux应该都有crontab,没有的话可以安装一下:
yum install vixie-cron
yum install crontabs
crontab用法
crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。
crontab –l : 显示 crontab 文件。
crontab -r : 删除 crontab 文件。
crontab -ir : 删除 crontab 文件前提醒用户。
在crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-yearday-of-week commands
合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字还有几个特殊的符号:"*"、"/"和"-"、","
*代表所有的取值范围内的数字
"/"代表每的意思,"/5"表示每5个单位
"-"代表从某个数字到某个数字
","分开几个离散的数字
领取专属 10元无门槛券
私享最新 技术干货