脚本批量更新文件(即批量文件覆盖)
upgrade.sh
脚本功能:可对多个系统批量覆盖代码(可排除指定系统)需修改对应的目录变量。将zip升级包放置到指定目录中,通过定时任务完成更新。单次只能升级一个版本,不支持数据库升级,仅为文件覆盖功能。
#!/bin/bash
#---------------------------------------
# 批量更新多文件夹内容 支持排除指定目录
# 注:多系统升级时,为避免文件冲突,建议
# 单次单压缩包更新
# author: SenSen 1050575278
# date: 2021/09/10
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
#添加定时任务 10min
# */10 * * * * /www/upgrade/upgrade.sh
#记录日志
log="/web/upgrade/upgrade.log"
#进入升级包所在目录 升级包必须包含version.txt文件
cd /web/upgrade/fix
#判断目录中是否有文件 原则上一次只能存在一个文件,避免多个升级包导致混乱
count=`ls -l|grep '^-'|wc -l`
#获取所有系统 废弃
# source ./wlt_dir.sh
#所在目录
baseDir='/web/oa/'
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`
#排除目录
excluded=()
#测试示例
#sysDir=('wlt_3163')
#获取当前目录下的升级包
fixFile=`ls`
if [ $count -ne 0 ]; then
for i in ${fixFile}
do
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
for f in ${sysDir}
do
#排除指定目录
if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
continue
fi
echo "系统:${f} 升级文件:${i}">>${log}
#解压到对应系统目录
unzip -oq ${i} -d ${baseDir}${f}
echo "${curtime} ${i} done">>${log}
done
done
#移动升级包
mv ${i} /web/upgrade/bak;
echo "${i} upgrade successfully">>$log
else
echo "upgrade_fix is empty"
fi