120 lines
3.5 KiB
Bash
120 lines
3.5 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
POWEROAD_DEVICE=`printenv POWEROAD_DEVICE || echo ems`
|
||
|
|
MY_INSTALL_DIR=/home/poweroad/${POWEROAD_DEVICE}
|
||
|
|
|
||
|
|
# 配置文件
|
||
|
|
UPGRAD_TGR=${MY_INSTALL_DIR}
|
||
|
|
UPGRAD_SRC=/var/poweroad/${POWEROAD_DEVICE}
|
||
|
|
UPGRAD_LOG_TGR=/var/poweroad
|
||
|
|
|
||
|
|
SRC_BIN_DIR=${UPGRAD_SRC}/bin
|
||
|
|
SRC_CFG_DIR=${UPGRAD_SRC}/config
|
||
|
|
SRC_TRANSLAT_DIR=${UPGRAD_SRC}/translate_file
|
||
|
|
SRC_RESOURCES_DIR=${UPGRAD_SRC}/resources
|
||
|
|
SRC_PRLIB_DIR=${UPGRAD_SRC}/poweroadlib
|
||
|
|
SRC_UP_SH=${UPGRAD_SRC}/app_start.sh
|
||
|
|
SRC_UP_BACK_SH=${UPGRAD_SRC}/upgrade_backup.sh
|
||
|
|
SRC_UP_ROLL_SH=${UPGRAD_SRC}/upgrade_rollback.sh
|
||
|
|
SRC_UP_DAEMON_SH=${UPGRAD_SRC}/upgrade_daemon.sh
|
||
|
|
SRC_PROFILE_SH=${UPGRAD_SRC}/.profile
|
||
|
|
|
||
|
|
TGR_BIN_DIR=${UPGRAD_TGR}/bin
|
||
|
|
TGR_CFG_DIR=${UPGRAD_TGR}/config
|
||
|
|
TGR_TRANSLAT_DIR=${UPGRAD_TGR}/translate_file
|
||
|
|
TGR_RESOURCES_DIR=${UPGRAD_TGR}/resources
|
||
|
|
TGR_PRLIB_DIR=/usr/poweroadlib
|
||
|
|
TGR_PROFILE_SH=/home/poweroad/.profile
|
||
|
|
|
||
|
|
# 创建日志文件的父目录
|
||
|
|
mkdir -p "${UPGRAD_SRC}"
|
||
|
|
|
||
|
|
# 日志文件
|
||
|
|
LOG_FILE=${UPGRAD_LOG_TGR}/upgrade.log
|
||
|
|
|
||
|
|
# 设置日志文件路径
|
||
|
|
MAX_SIZE=10485760 # 10 MB
|
||
|
|
|
||
|
|
# 检查日志文件是否存在
|
||
|
|
if [ ! -f "${LOG_FILE}" ]; then
|
||
|
|
touch "${LOG_FILE}"
|
||
|
|
chmod 644 "${LOG_FILE}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 检查日志文件大小
|
||
|
|
LOG_SIZE=$(stat -c %s "${LOG_FILE}")
|
||
|
|
|
||
|
|
# 如果日志文件大小超过最大值,则删除最旧的一条记录
|
||
|
|
if [ ${LOG_SIZE} -gt ${MAX_SIZE} ]; then
|
||
|
|
# 读取日志文件内容
|
||
|
|
readarray -t lines < "${LOG_FILE}"
|
||
|
|
|
||
|
|
# 删除最旧的一条记录
|
||
|
|
# 只保留从第二行开始的内容
|
||
|
|
remaining_lines="${lines[@]:1}"
|
||
|
|
printf "%s\n" "${remaining_lines[@]}" > "${LOG_FILE}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 获取当前日期和时间
|
||
|
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||
|
|
|
||
|
|
# 清空目标文件夹
|
||
|
|
echo "回滚时间: ${TIMESTAMP}" >> ${LOG_FILE}
|
||
|
|
echo "源目录: ${UPGRAD_SRC}" >> ${LOG_FILE}
|
||
|
|
echo "目标目录: ${UPGRAD_TGR}" >> ${LOG_FILE}
|
||
|
|
|
||
|
|
mkdir -p ${TGR_BIN_DIR}
|
||
|
|
mkdir -p ${TGR_CFG_DIR}
|
||
|
|
mkdir -p ${TGR_TRANSLAT_DIR}
|
||
|
|
mkdir -p ${TGR_RESOURCES_DIR}
|
||
|
|
mkdir -p ${TGR_PRLIB_DIR}
|
||
|
|
|
||
|
|
# 删除目标文件夹下的所有文件
|
||
|
|
# rm -rf ${TGR_BIN_DIR}/*
|
||
|
|
# rm -rf ${TGR_CFG_DIR}/*
|
||
|
|
# rm -rf ${TGR_TRANSLAT_DIR}/*
|
||
|
|
# rm -rf ${TGR_RESOURCES_DIR}/*
|
||
|
|
# rm -rf ${TGR_PRLIB_DIR}/*
|
||
|
|
|
||
|
|
# 使用 cp 更新文件
|
||
|
|
cp -rf ${SRC_BIN_DIR}/* ${TGR_BIN_DIR}/
|
||
|
|
cp -rf ${SRC_CFG_DIR}/* ${TGR_CFG_DIR}/
|
||
|
|
# cp -rf ${SRC_TRANSLAT_DIR}/* ${TGR_TRANSLAT_DIR}/
|
||
|
|
cp -rf ${SRC_RESOURCES_DIR}/* ${TGR_RESOURCES_DIR}/
|
||
|
|
cp -rf ${SRC_PRLIB_DIR}/* ${TGR_PRLIB_DIR}/
|
||
|
|
cp -rf ${SRC_UP_SH} ${UPGRAD_TGR}/
|
||
|
|
cp -rf ${SRC_UP_BACK_SH} ${UPGRAD_TGR}/
|
||
|
|
cp -rf ${SRC_UP_ROLL_SH} ${UPGRAD_TGR}/
|
||
|
|
cp -rf ${SRC_UP_DAEMON_SH} ${UPGRAD_TGR}/
|
||
|
|
cp -rf "${SRC_PROFILE_SH}" "${TGR_PROFILE_SH}"
|
||
|
|
|
||
|
|
chmod +x "${TGR_BIN_DIR}"/*
|
||
|
|
chmod +x "${UPGRAD_TGR}"/*.sh
|
||
|
|
|
||
|
|
# 同步文件系统缓冲区,确保文件写入磁盘
|
||
|
|
sync
|
||
|
|
|
||
|
|
# 记录操作日志
|
||
|
|
echo "回滚文件夹内容完成。" >> ${LOG_FILE}
|
||
|
|
|
||
|
|
# 检查拷贝是否成功
|
||
|
|
if [ -d ${TGR_BIN_DIR} ] && [ -d ${TGR_CFG_DIR} ] && [ -d ${TGR_RESOURCES_DIR} ] && [ -d ${TGR_PRLIB_DIR} ]; then
|
||
|
|
if [ ! -z "$(ls -A ${TGR_BIN_DIR})" ] && [ ! -z "$(ls -A ${TGR_CFG_DIR})" ] && [ ! -z "$(ls -A ${TGR_RESOURCES_DIR})" ] && [ ! -z "$(ls -A ${TGR_PRLIB_DIR})" ]; then
|
||
|
|
echo "所有文件拷贝成功。" >> ${LOG_FILE}
|
||
|
|
echo "" >> ${LOG_FILE} # 添加一个空行
|
||
|
|
else
|
||
|
|
echo "部分文件拷贝失败,请检查目标目录。" >> ${LOG_FILE}
|
||
|
|
echo "" >> ${LOG_FILE} # 添加一个空行
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "目录创建失败,请检查权限或路径问题。" >> ${LOG_FILE}
|
||
|
|
echo "" >> ${LOG_FILE} # 添加一个空行
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 同步文件系统缓冲区,确保文件写入磁盘
|
||
|
|
sync
|
||
|
|
|
||
|
|
sleep 1
|
||
|
|
|
||
|
|
# 重启系统
|
||
|
|
reboot -f
|