配置檔案和配置表定期備份小工具

2022-09-13 15:30:14 字數 2977 閱讀 3866

現在維護的配置檔案/表都是人手工備份,上次某機器宕機,想在別的機器上拉起應用,去找備份的時候,發現最近的備份還是去年的,因此有了這個想法寫這麼乙個小工具才進行定期備份。其實細極思恐,每天備份一下還是很有必要的,出事了,也能找到是哪天開始的不是?

設計的思路還是先把哪些機器的檔案、哪個資料庫的表需要備份,放入資料庫中,然後弄乙個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://$/$ --ftp-user=$ --ftp-password=$ -r -t 2 -t 1 -p $/data >>$ 2>&1

3:對於資料庫,我這裡只有oracle,就使用的是exp工具dump檔案出來:

exp  $/$@$ tables=$ file=./$.dmp >>$ 2>&1

4:完成備份後,將備份壓縮打包,移動進分日期的備份目錄。

整體效果如下:

21_bill***%cfg_bakfile.sh

20161222 備份開始

建立目錄 /data05/cfg_bakfile/20161222

開始打包 172.20.31.98:template

開始備份 acctdb_jf_oldcrm:moni_sys_machine

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

結束備份 acctdb_jf_oldcrm:moni_sys_machine

20161222 備份結束

21_bill***%pwd

/data05/cfg_bakfile/20161222/acctdb_jf_oldcrm

21_bill***%ls

moni_sys_machine.dmp.tar.gz

Centos網路配置小工具

之前在centos 6下編輯網絡卡,直接使用setup工具就可以了。但在新版的centos 7裡,setuptool已經沒有網路編輯元件了,取而代之的是networkmanager text user inte ce,即nmtui。nmtui預設隨系統標準安裝,如果你使用最小化安裝,可能沒有該軟體,...

備忘錄 環境配置與小工具類

以下是c語言的檔案頭配置,其他語言類似。配置檔案頭 func settitle if filetype c call setline 1,call setline 2,author xusongqi live.com call setline 3,call setline 4,created tim...

配置檔案讀取工具類

package io.flysium.framework.util 配置檔案讀取工具類 public final class propertiesutils param vmname 啟動應用是通過 d設定的引數名稱,如 confing path dubbo.protocol.port等 param...