主旨: 利用shell对象变量缓存旧配置,和新的配置进行合并生成正确的配置应用于应用系统,从而达到一键升级。
# 检测环境变量或者参数
function checkWorkspace(){
if [ ! -n "$oldWorkspace" ] ;then
if [ ! -n "$1" ] ;then
echo [erorr ] your old workspace parameter or env is empty!
exit
else
oldWorkspace=$1
fi
fi
}
# 备份当前版本
function backup(){
rm -rf see20bak 2>&1 >/dev/null
mkdir see20bak
\cp -a $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/biz.properties see20bak/
\cp -a $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/jdbc.properties see20bak/
\cp -a $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/cas.properties see20bak/
\cp -a $oldWorkspace/server/config/jobServer.xml see20bak/
\cp -a $oldWorkspace/server/config/properties/dbcp.properties see20bak/
}
# 缓存旧的配置
function cacheConfig(){
for line in `cat see20bak/biz.properties | awk '{if(/^#/){next}}1' | awk '{print $1$2}'`
do
key=`echo $line | cut -d \= -f 1`
if [[ $bizList =~ "$key" ]] ;then
keys=`echo $key | tr "." "-"`
value=`echo $line | cut -d \= -f 2`
map["$keys"]=$value
fi
done
}
# 合并配置
function combineConfig(){
rm -rf see20bak/biz.properties 2>&1 >/dev/null
cd $curWorkspace/tomcat/webapps/
rm -rf acm && mkdir acm
unzip -q acm.war -d acm/
cd $curWorkspace
cat $curWorkspace/tomcat/webapps/acm/WEB-INF/conf/biz.properties | while read line
do
key=`echo "$line" | cut -d \= -f 1`
if [[ $bizList =~ "$key" ]] ;then
keys=`echo $key | tr "." "-"`
value=$key"="${map["$keys"]}
value=`echo $value | tr -d '\r'`
echo "$value" >> see20bak/biz.properties
else
line=`echo "$line" | tr -d '\r'`
echo "$line" >> see20bak/biz.properties
fi
done
}
# upgrade and paste config
function upgradeAndPasteConfig(){
# jre
echo [note ] upgrade jre start ......
\cp -ra $curWorkspace/jre $oldWorkspace
echo [note ] upgrade jre end ......
# server and paste config
echo [note ] upgrade server start ......
\cp -ra $curWorkspace/server $oldWorkspace
cp -a see20bak/jobServer.xml $oldWorkspace/server/config/
cp -a see20bak/dbcp.properties $oldWorkspace/server/config/properties/
echo [note ] upgrade server end ......
# tomcat and paste config
echo [note ] upgrade tomcat start ......
\cp -ra $curWorkspace/tomcat $oldWorkspace
cd $oldWorkspace/tomcat/webapps/
rm -rf acm && mkdir acm
unzip -q acm.war -d acm/
\cp -a $curWorkspace/see20bak/biz.properties $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/
\cp -a $curWorkspace/see20bak/jdbc.properties $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/
\cp -a $curWorkspace/see20bak/cas.properties $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/
echo [note ] upgrade tomcat end ......
# startUp.sh shutDown.sh
echo [note ] upgrade start stop shell start ......
cd $curWorkspace
\cp -a startUp.sh $oldWorkspace/
\cp -a shutDown.sh $oldWorkspace/
echo [note ] upgrade start stop shell end ......
chmod -R 755 $oldWorkspace/*
}
# 获取上一次的安装路径
if [ -f "/tmp/.see20_home" ] ; then
oldWorkspace=`cat /tmp/.see20_home`
else
oldWorkspace=""
fi
# 当前路径
curWorkspace=`pwd`
declare -A map=()
# 需要缓存的配置key
bizList="jobflow.rest.endpoint-dssp.repository.type-dssp.repository.location-dssp.repository.user-dssp.repository.password"
# 检测安装目录
echo [note ] check last install workspace start ......
checkWorkspace $1
echo [note ] check last install workspace end ......
# 备份配置
echo [note ] back up last config start ......
backup #备份
echo [note ] back up last config end ......
# 缓存可变配置
echo [note ] cache config start ......
cacheConfig
echo [note ] cache config end ......
# 配置合并
echo [note ] combine config start ......
combineConfig
echo [note ] combine config end ......
# 升级操作
upgradeAndPasteConfig
# 删除备份目录
rm -rf see20bak
关注
关注下方微信公众号,可以及时获取到各种技术的干货哦,如果你有想推荐的帖子,也可以联系我。