#!/bin/bash POWEROAD_DEVICE=`printenv POWEROAD_DEVICE || echo ems` # 配置文件 UPGRAD_SRC=/home/poweroad/${POWEROAD_DEVICE} UPGRAD_TGR=/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=/usr/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=/home/poweroad/.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=${UPGRAD_TGR}/poweroadlib TGR_UP_SH=${UPGRAD_TGR} # 日志文件 LOG_FILE=${UPGRAD_LOG_TGR}/upgrade.log # 创建日志文件的父目录 mkdir -p "${UPGRAD_TGR}" # 创建或追加日志文件 touch "${LOG_FILE}" # 设置日志文件路径 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 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} # 获取当前日期和时间 TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') # 备份现有文件夹 rm -rf ${TGR_BIN_DIR}/* cp -r ${SRC_BIN_DIR}/* ${TGR_BIN_DIR}/ cp -r ${SRC_CFG_DIR}/* ${TGR_CFG_DIR}/ # cp -rf ${SRC_TRANSLAT_DIR}/* ${TGR_TRANSLAT_DIR}/ cp -rf ${SRC_RESOURCES_DIR}/* ${TGR_RESOURCES_DIR}/ cp -r ${SRC_PRLIB_DIR}/* ${TGR_PRLIB_DIR}/ cp -r ${SRC_UP_SH} ${TGR_UP_SH}/ cp -r ${SRC_UP_BACK_SH} ${TGR_UP_SH}/ cp -r ${SRC_UP_ROLL_SH} ${TGR_UP_SH}/ cp -r ${SRC_UP_DAEMON_SH} ${TGR_UP_SH}/ cp -r "${SRC_PROFILE_SH}" "${UPGRAD_TGR}/" chmod +x "${TGR_UP_SH}"/*.sh # 同步文件系统缓冲区,确保文件写入磁盘 sync # 记录操作日志 echo "备份时间: ${TIMESTAMP}" >> ${LOG_FILE} echo "源目录: ${UPGRAD_SRC}" >> ${LOG_FILE} echo "目标目录: ${UPGRAD_TGR}" >> ${LOG_FILE} 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