配置文件和配置表定期备份小工具

现在维护的配置文件/表都是人手工备份,上次某机器宕机,想在别的机器上拉起应用,去找备份的时候,发现最近的备份还是去年的,因此有了这个想法写这么一个小工具才进行定期备份。其实细极思恐,每天备份一下还是很有必要的,出事了,也能找到是哪天开始的不是?

设计的思路还是先把哪些机器的文件、哪个数据库的表需要备份,放入数据库中,然后弄一个shell,在某个机器上启动这个shell,使用ftp去备份配置文件,使用exp去dmp数据库文件,完成备份。

首先是数据库设计部分,需要两张表:

“机器表”:

create table MONI_SYS_MACHINE

(

machine_id    NUMBER not null,

machine_type  CHAR(1),

machine_info  VARCHAR2(20),

machine_name  VARCHAR2(20),

machine_class VARCHAR2(10),

shortname     VARCHAR2(10),

username      VARCHAR2(20),

userpasswd    VARCHAR2(100)

)

comment on column MONI_SYS_MACHINE.machine_id

is ‘机器编号,‘;

comment on column MONI_SYS_MACHINE.machine_type

is ‘机器类型,M代表主机 D代表数据库‘;

comment on column MONI_SYS_MACHINE.machine_info

is ‘机器信息,填oracle ,AIX,linux等,便于将来shell等玩意儿扩展用‘;

comment on column MONI_SYS_MACHINE.machine_name

is ‘机器名,对于主机,填写IP,对于数据库,填写TNS‘;

comment on column MONI_SYS_MACHINE.machine_class

is ‘机器分类,用于批量执行脚本‘;

comment on column MONI_SYS_MACHINE.shortname

is ‘机器别名,用于机器无密码登录‘;

comment on column MONI_SYS_MACHINE.username

is ‘用户名‘;

comment on column MONI_SYS_MACHINE.userpasswd

is ‘加密密码‘;

注:对于这个工具,机器分类,机器别名,机器信息无实际意义。

备份配置表:

create table MONI_BACKINFO_CFG

(

cfg_id       NUMBER not null,

machine_id   NUMBER,

backpath     VARCHAR2(1024),

backcycle    NUMBER,

lastbacktime DATE

)

comment on column MONI_BACKINFO_CFG.cfg_id

is ‘配置ID‘;

comment on column MONI_BACKINFO_CFG.machine_id

is ‘机器ID‘;

comment on column MONI_BACKINFO_CFG.backpath

is ‘备份目录,对于主机,可以为备份目录名或者文件名,对于数据库,则为表名‘;

comment on column MONI_BACKINFO_CFG.backcycle

is ‘备份周期,按天‘;

comment on column MONI_BACKINFO_CFG.lastbacktime

is ‘最后备份日期‘;

SHELL部分:

1:从数据库中读取配置,读取的逻辑如下:

select a.cfg_id||‘##‘||trim(a.backpath)||‘##‘||trim(b.machine_name)||‘##‘||trim(b.username)||‘##‘||trim(b.userpasswd)||‘##‘||trim(b.machine_type)

from moni_backinfo_cfg  a , moni_sys_machine b  where a.machine_id = b.machine_id  and sysdate - nvl(a.lastbacktime,sysdate-1) >= a.backcycle

获取数据后,用你的解密方法将密文密码解密。

2:对于主机文件目录/文件备份,我使用的是wget工具来进行的(还有其他的,看你自己的爱好和机器上装了什么了)。

wget ftp://${machine_name}/${backpath} --ftp-user=${username} --ftp-password=${userpasswd} -r -T 2 -t 1 -P ${thislocalpath}/data >>${WGETLOG} 2>&1

3:对于数据库,我这里只有oracle,就使用的是exp工具dump文件出来:

exp  ${username}/${userpasswd}@${machine_name} tables=${backpath} file=./${backpath}.dmp >>${DMPLOG} 2>&1

4:完成备份后,将备份压缩打包,移动进分日期的备份目录。

整体效果如下:

21_billxxx%cfg_bakfile.sh

20161222 备份开始

建立目录 /data05/cfg_bakfile/20161222

开始备份 172.20.31.98:/app/billxxx/template

开始打包 172.20.31.98:template

结束备份 172.20.31.98:/app/billxxx/template

开始备份 ACCTDB_JF_OLDCRM:moni_sys_machine

开始打包 ./moni_sys_machine.dmp.tar.gz

结束备份 ACCTDB_JF_OLDCRM:moni_sys_machine

20161222 备份结束

21_billxxx%pwd

/data05/cfg_bakfile/20161222/ACCTDB_JF_OLDCRM

21_billxxx%ls

moni_sys_machine.dmp.tar.gz

另外,需要说明的是wget这个工具,因为使用的其实是ftp,对已经上锁的文件没法下载(比如计费的xfer配置文件),遇到这种情况,我的办法是在主机上弄个crontab 先拷贝到别的目录,再下载。不知道还有其他好办法没?

需要详细脚本的可以留言获取。

时间: 2024-08-12 00:30:15

配置文件和配置表定期备份小工具的相关文章

博客备份小工具3

[转]博客备份小工具3 接着 博客转发小工具2 ,又弄了一个第三版.主要功能有:博客备份到本地.浏览备份到本地的博客.关键字搜索本地的博客和转发博客可以选择个人分类 填写Tag标签.其实想了想,转发博客干嘛非要在本地客户端转发,直接在博客园的页面用js不就可以达到目的么.想是这么想,还没尝试.等我写完了这个博客就去试试..继续回到这个小工具,说实在的本人做的这个小工具界面丑的那是..反正就是很丑很丑啦.没办法,没有美工的那种艺术细胞.还有就是,整个功能其实真没什么技术含量,还是html的抓取,w

基于Java 的增量与完全备份小工具

前段时间,因为各种原因,自己动手写了一个小的备份工具,用了一个星期,想想把它的设计思路放上来,当是笔记吧. 需求场景:这个工具起初的目的是为了解决朋友公司对其网络的限制(不可以用任何同步软件,git,外网SVN,U盘只读).本来只是想做一个自动打包和发送邮件的工具,后来就发展成了这个. 软件功能:这个软件最终实现的功能包括1.读取配置文件,对配置文件中指定目录的文件进行日期检测,获取对应修改过的文件.2.将读出的文件进行压缩:3.将压缩文件发送到指定邮箱:4.对压缩文件进行历史版本的保留 根据最

Hadoop2.6.0配置參数查看小工具

前言 使用Hadoop进行离线分析或者数据挖掘的project师,常常会须要对Hadoop集群或者mapreduce作业进行性能调优. 或许你知道通过浏览器訪问http://master:18088/conf来查看配置信息.例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" /> 但是

一个配置表优化的想法

今天下班在班车上想了一个关于配置表存储的小优化,起因是早上的时候发现了一个bug,这个bug是由于在运行时动态更改了一个列表配置导致的. 其实关于这种运行时"偷偷"改配置的问题我之前也有考虑过,这种应该是一不小心就会写出的,这不终于都出了一个. 至于如何预防这种问题,我认为在python里面似乎也没有什么好的解决方法,因为它不像c++有const语义,但有一个稍尽人事的预防措施就是把列表型的配置读成元组(tuple).而由此衍生出的一个想法便是:把配置表中所有的列表型配置都读成共享的元

web day19 Service层处理事务(利用ThreadLocal),TxQueryRunner小工具,单表练习(增删改查操作),分页

Service事务 DAO中不是处理事务的地方,因为DAO中的每个方法都是对数据库的一次操作 在Service中不应该出现Connection,它应该只在DAO中出现, 因为它是JDBC的东西,JDBC的东西是用来连接数据库的 修改JdbcUtils 我们把对事务的开启和关闭放到JdbcUtils中,在Service中调用JdbcUtils的方法来完成事务的处理, 但在Service中就不会再出现Connection这一"禁忌"了. 代码 public class JdbcUtils

C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具

--首发于博客园, 转载请保留此链接  博客原文地址 本文运行环境: Win7 X64, VS2010 1. SQLite 的优点: SQLite 是一款轻型数据库,开发包只有十几M, 相对于 MSSQL 几个 G 的体积来说简直是小 Case, 而且在打包成的软件里只需要添加相关的 DLL 就可以在其他的电脑运行,这一点来说比 Access 数据库还要来得方便.  SQLite虽然很小巧,但是支持的SQL语句不会太逊色于其他开源数据库. 更多详情参见百科:SQLite 2. 开发包下载 SQL

安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup

Setup命令是linux下面用来配置网络,防火墙,系统服务等设置的图形小工具.使用起来非常方便简单,可是centos\redhat最小化安装之后发现setup命令工具用不了. 接下来介绍如何安装setup小工具: yum whatprovides /usr/sbin/setup 显示信息: setuptool-1.19.9-4.el6.i686 : A text mode system configuration tool 提示是在setup这个安装包下面就先安装setuptool yum -

分享一个小工具:Excel表快速转换成JSON字符串

在游戏项目中一般都需要由策划制作大量的游戏内容,其中很大一部分是使用Excel表来制作的.于是程序就需要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Office Excel组件来实现数据访问的,效率十分令人不满.一个端游项目一般要上百个表格,手游项目20.30个表格基本也是要的,于是表格导入程序的过程一般要几分钟,项目后期要接近半个小时. 此次分享的小工具,在速度上有质的飞越,比上述方法实现的工具有接近100倍的速度提升: 完整项目源代码下载:https

Cisco设备配置文件定期备份

一.需求和应对之策 公司IDC机房几台交换机和防火墙设备,因业务需要,经常在交换机上或防火墙上修改配置文件,虽说Cisco设备稳定性很好,但做好备份,可以防万一. 网上有很多关于Cisco设备定期备份的文章,个人根据公司实际情况写了个备份脚本. 个人采用自动交互expect获取Cisco设备的配置文件,让后通过FTP上传到FTP服务器. 该脚本是放在Centos6.5服务器上,每周六晚上23:00执行. 二.线上脚本 1.脚本所在目录介绍 [[email protected] cisco_bak