shell更新应用程序脚本

更新文件:

## update.info
#update_type(full/partial) file_type	file_in_server location_in_client cksum date_time old_version new_version
full_update file /updates/update_28181118_1112.tar.gz	xxxx	 20181118_1112
partial_update file /app_manager/run.py /export/App/app_manager xxxx 20181118_1112
partial_update dir /app_manager/temp /export/App/app_manager xxxx 20181118_1112
old_version 1.0
new_version 1.1

更新脚本:

# 加载全局环境变量
./lib/glob_env.sh

# 加载应用环境变量
./lib/app_env.sh

# 脚本相关变量定义
SERVERADDRESS="http://x.x.x.x:8018"
APPNAME="tom_manager"
APPHOME="/export/App/logger_app"
STOPAPPCMD="~/appOn.sh stop"
STARTAPPCMD="~/appOn.sh start"
RMTFLAG="${SERVERADDRESS}/app_server/update.info"
LOCFLAG="$APPHOME/update.info"
VERSIONFILE="$APPHOME/version"
UPDFILE="update.sh"

# 检查命令是否安装
cmd_exist wget || yum install -y wget
cmd_exist tar || yum install -y tar

# 下载更新文件
# 检查对比本地文件
# 相同
#		直接退款
# 不相同
#		停止应用
#		下载远端文件到本地
#		解压
#		替换文件
#		更新版本文件,临时文件清理
#		重启应用
#

TMPDIR=`mktemp -d`
TMPUPDFLAG="$TMPDIR/update.info"
NCTMPUPDFLAG="$TMPDIR/update.info.nc"

#检查磁盘空间
#check disk space
disc_space_enough $TMPDIR 50 || (echo_red_error "no enough space left, at least 50M is needed, update script exit." && exit -1)

#下载更新文件,并对比
#download update file and compare
wget -o $TMPUPDFLAG $RMTFLAG
res=`compare_file $TMPUPDFLAG $LOCFLAG`
[ $res -eq 0 ] && echo_red "[INFO]$APPNAME, version is same with remote, no need update." && exit 0

#停止应用
eval $STOPAPPCMD

#解析更新文件,执行更新
#parse_file, and make update
full_update_flag="full_update"
partial_update_flag="partial_update"

get_nc_file $TMPUPDFLAG $NCTMPUPDFLAG
full_tar=`grep ${full_update_flag} $NCTMPUPDFLAG | awk -F" " '{print $3}'`

if [ "x"${full_tar} != "x" ]; then #do_full_update,全部更新
	tar_file_name=`basename ${full_tar}`
	file_name=${tar_file_name%%.*}
	wget -P $TMPDIR "${SERVERADDRESS}${full_tar}"
	tar xvf $tar_file_name -C $TMPDIR
	for file in `ls $TMPDIR/$file_name`; do
		[ $file != ${UPDFILE} ] && cp -r $TMPDIR/$file_name/$file $APPHOME/
	done
else #do_partial_update,部分更新
	 grep ${partial_update_flag} $NCTMPUPDFLAG |while read x file_type file_in_server location_in_client x; do
	        file_name=`basename $file_in_server`
	        if [ ${file_type} == "dir" ];then
	                 wget -r -np -P ${TMPDIR} "${SERVERADDRESS}${file_in_server}/"
	                cp -r ${TMPDIR}/${SERVERHOST}${file_in_server} ${location_in_client}
	                rm -rf ${TMPDIR}/${SERVERHOST}${file_in_server}
	        elif [ ${file_type} == "file" ];then
	                wget -o ${TMPDIR}/${file_name} ${SERVERADDRESS}${file_in_server}
	                cp ${TMPDIR}/${file_name} ${location_in_client}
	                rm -rf ${TMPDIR}/${file_name}
	        else
	                continue
	        fi
	        echo "$file_type, $file_in_server, $file_name, $location_in_client"
	done
	#done < <(grep ${partial_update_flag} $NCTMPUPDFLAG)
fi

#update version file, and clear temp files and directories
cp $TMPUPDFLAG $LOCFLAG
NEWVERSION=`grep 'new_version' $TMPUPDFLAG | awk -F" " '{print $2}'`
echo "$NEWVERSION">$VERSIONFILE
rm -rf $TMPDIR

echo_red_success "congratulations, upgrade success, after server restart, server will back to work!"

#启动应用
#start app
eval $STARTAPPCMD
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值