附:由于安装禅道方式为一键安装包安装,采用主从整包备份方式进行。
主环境(禅道运行环境):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 " expect "*assword:" { send "zentao_bakPWD@2019 "} } "*assword:" { send "zentao_bakPWD@2019 " } } 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