首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

shell脚本每天自动进行数据库备份与远程复制

之前忙着找实习和期末考试也好久没更新了,现在终于算稳定下来了,下午写了个小脚本,可以每天自动备份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个单位

"-"代表从某个数字到某个数字

","分开几个离散的数字

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G1MD7J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券