禅道定时主从备份

附:由于安装禅道方式为一键安装包安装,采用主从整包备份方式进行。
主环境(禅道运行环境):192.168.67.69
从环境(禅道备份包环境):192.168.67.60

实现方式:
1)在主环境上,停止禅道服务->备份整个禅道包zbox到从环境下的备份目录下->启动禅道服务
2)在主环境下实现上述步骤并编写成脚本,在Linux定时任务下加入定时任务,定时执行该脚本
3)在从环境下添加Linux定时任务清理脚本,定时清理备份目录下的旧文件

1.登录主环境:192.168.67.69
查看禅道安装路径为/opt/zbox:
[root@iz2ze0xsbpma0nxv4gvvo0z home]# cd /opt/
[root@iz2ze0xsbpma0nxv4gvvo0z opt]# ll
总用量 0
drwxr-xr-x. 10 bhd  bhd  123 3月  25 2019 zbox
[root@iz2ze0xsbpma0nxv4gvvo0z opt]# cd zbox/
[root@iz2ze0xsbpma0nxv4gvvo0z zbox]# pwd
/opt/zbox

2.在根目录下创建目录zentao_bak_sh,并在里面创建备份脚本zentao_bak.sh,并增加可执行权限:

[root@iz2ze0xsbpma0nxv4gvvo0z /]# mkdir zentao_bak_sh
[root@iz2ze0xsbpma0nxv4gvvo0z /]# cd zentao_bak_sh
[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak_sh]# touch zentao_bak.sh
[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak_sh]# chmod +x zentao_bak.sh

3.编写zentao_bak.sh脚本:

#!/bin/bash
#禅道备份脚本
zenboxPath="/opt/zbox"

echo '--------开始备份--------'
#判断禅道是否在启动中
echo '正在停止禅道服务...'
pid=$(ps -fu `whoami`|grep "$zenboxPath"|grep -v grep|awk '{print $2}')
if [ -z "$pid" ];then
    echo "禅道已经关闭"
else
    $zenboxPath/zbox stop
    sleep 8
    pidd=$(ps -fu `whoami`|grep "$zenboxPath"|grep -v grep|awk '{print $2}')
    if [ -z "$pidd" ];then
        echo '停止禅道服务成功!'
    else
        echo '禅道关闭异常,请排查!'
        exit 1
    fi
fi

echo '同步到从环境上...'
/zentao_bak_sh/copy.sh echo "同步完成,备份成功!" $zenboxPath/zbox start sleep 5 curl -i http://localhost:8081 if [ $? -eq 28 -o $? -eq 7 ];then echo "禅道启动失败,请检查!" exit 1 else echo "禅道启动成功!" fi echo '--------备份结束--------'

4.在zentao_bak_sh下新增并编写copy.sh脚本,首先在主环境上安装上expect并创建copy.sh脚本:

[root@iz2ze0xsbpma0nxv4gvvo0z home]# yum -y install expect
[root@iz2ze0xsbpma0nxv4gvvo0z home]# cd /zentao_bak_sh
[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak_sh]# touch copy.sh
[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak_sh]# chmod +x copy.sh

copy.sh脚本内容:

#!/usr/bin/expect
#禅道跨机备份脚本

set time [exec date +%Y%m%d_%H%M]

#整个zbox备份到远程主机
set timeout -1
spawn scp -o StrictHostKeyChecking=no -P 22 -r /opt/zbox root@192.168.67.60:/home/zentao_bak/zbox_$time.bak

expect {
"(yes/no)?" {
   send "yes\n"
   expect "*assword:" { send "zentao_bakPWD@2019\n"}
  }
  "*assword:" {
   send "zentao_bakPWD@2019\n"
  }
}
expect eof

5.在从环境上192.168.67.60,在home下新建zentao_bak目录:

[root@iz2ze0xsbpma0nxv4gvvo0z home]# mkdir zentao_bak
[root@iz2ze0xsbpma0nxv4gvvo0z home]# ll
总用量 0
drwx------. 3 bhd  bhd  78 4月  11 2018 bhd
drwxr-xr-x. 2 root root  6 12月  4 15:10 zentao_bak

6.在主环境上,加入定时任务,每周3,周五5晚上10点,执行zentao_bak.sh:

[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak]# crontab -e
crontab: installing new crontab

加入:

0 22 * * 3,5 /zentao_bak_sh/zentao_bak.sh
[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak]# crontab -l
0 22 * * 3,5 /zentao_bak_sh/zentao_bak.sh
7.在从环境上,加入定时任务脚本,每周6晚上10点,删除/zentao_bak下的4天之前的文件:
在/home/zentao_bak下创建zentao_clear.sh脚本:
[root@iz2ze0xsbpma0nxv4gvvo0z zentao_bak]# ll
总用量 4
drwxr-xr-x. 10 root root 123 12月  4 16:06 zbox_20191204_1605.bak
drwxr-xr-x. 10 root root 123 12月  4 16:14 zbox_20191204_1613.bak
drwxr-xr-x. 10 root root 123 12月  4 16:21 zbox_20191204_1620.bak
-rwxr-xr-x.  1 root root  86 12月  4 16:56 zentao_clear.sh

zentao_clear.sh内容如下:

#!/bin/bash
#删除5天之前的备份包
find /home/zentao_bak -type d -mtime +5 -name "*.bak" -exec rm -rf {} \;

从环境加入定时清理任务:

0 22 * * 6 /home/zentao_bak/zentao_clear.sh
posted @ 2019-12-16 10:06  辉东  阅读(563)  评论(0编辑  收藏  举报