117 lines
2.2 KiB
Bash
117 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# 目标路径
|
|
BASE_PATH=/usr/local/gateway
|
|
BACKUP_PATH=/usr/local/gateway_backup
|
|
TMP_PATH=/usr/local/tmp
|
|
|
|
function backup(){
|
|
if [ -d $BASE_PATH ]; then
|
|
if [ ! -d $BACKUP_PATH ]; then
|
|
mkdir -p $BACKUP_PATH
|
|
fi
|
|
cp -rf $BASE_PATH/* $BACKUP_PATH/
|
|
fi
|
|
}
|
|
|
|
function rollback(){
|
|
if [ -d $BASE_PATH ]; then
|
|
if [ -d $BACKUP_PATH ]; then
|
|
rm -rf $BASE_PATH/*
|
|
cp -rf $BACKUP_PATH/* $BASE_PATH/
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function upgrade(){
|
|
if [ ! -d $BASE_PATH ]; then
|
|
mkdir -p $BASE_PATH
|
|
fi
|
|
mkdir -p $TMP_PATH
|
|
unzip -d $TMP_PATH $1 > /dev/null 2>&1
|
|
if [ 0 -ne $? ];then
|
|
echo "解压失败">&2
|
|
return 1
|
|
fi
|
|
rsync -av --progress $TMP_PATH/gateway/* $BASE_PATH/ --exclude bin --exclude include --exclude lib --exclude lib64 --exclude runtime --exclude share --exclude src/config.toml > /dev/null 2>&1
|
|
if [ 0 -ne $? ];then
|
|
echo "复制文件失败">&2
|
|
return 2
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
function clean(){
|
|
rm -rf $BACKUP_PATH/
|
|
rm -rf $TMP_PATH/
|
|
rm -rf $1
|
|
}
|
|
|
|
function service_ok(){
|
|
systemctl status gateway > /dev/null 2>&1
|
|
if [ 0 -eq $? ]
|
|
then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function stop(){
|
|
service_ok
|
|
if [ 0 -eq $? ]; then
|
|
systemctl stop gateway > /dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
function start(){
|
|
stop
|
|
cnt=0
|
|
while [ 0 -eq 0 ]
|
|
do
|
|
systemctl start gateway > /dev/null 2>&1
|
|
sleep 1
|
|
service_ok
|
|
if [ 0 -eq $? ]; then
|
|
return 0
|
|
else
|
|
cnt=$[${cnt}+1]
|
|
if [ ${cnt} -eq 3 ]; then
|
|
return 1
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
if [ -n "$1" ];then
|
|
stop
|
|
backup
|
|
upgrade $1
|
|
if [ 1 -eq $? ];then
|
|
rollback
|
|
start
|
|
clean $1
|
|
exit 1
|
|
elif [ 2 -eq $? ];then
|
|
rollback
|
|
start
|
|
clean $1
|
|
exit 1
|
|
fi
|
|
start
|
|
if [ 0 -eq $? ];then
|
|
clean $1
|
|
exit 0
|
|
else
|
|
rollback
|
|
start
|
|
echo "服务无法启动,升级失败,回滚到上一版本">&2
|
|
clean $1
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "没有升级包路径">&2
|
|
fi
|
|
|
|
|