#!/bin/bash
#传奇备份:rsync每15分钟推送过来,OSS每20分钟同步,本地保留8天,OSS保留64天
LOCK_FILE="/tmp/mir_backup_oss.lock"
#进程锁,防止多个脚本并发跑
if [ -f "${LOCK_FILE}" ];then
echo "$(date '+%Y-%m-%d %H:%M:%S') 上一轮OSS同步未完成,跳过本次任务" >> /var/log/mir_oss_backup.log
exit 0
fi
touch "${LOCK_FILE}"
LOCAL_DIR="/data/backup"
GAME_BACKUP="/data/backup/game_data/"
OSS_BUCKET="oss://slws-5b-data/backup_mir/"
LOG_FILE="/var/log/mir_oss_backup.log"
echo "==================== $(date '+%Y-%m-%d %H:%M:%S') OSS同步任务开始 ====================" >> "${LOG_FILE}"
#同步到OSS,禁止--delete,并发20,开启snapshot减少海量小文件目录扫描IO
ossutil64 sync "${LOCAL_DIR}" "${OSS_BUCKET}" --retry-times=5 -j 20 --snapshot-path=/tmp/oss_snap >> "${LOG_FILE}" 2>&1
RET=$?
if [ ${RET} -eq 0 ];then
echo "OSS同步 SUCCESS" >> "${LOG_FILE}"
else
echo "OSS同步 FAILED ret=${RET},本次不清理本地备份!" >> "${LOG_FILE}"
#企业微信告警,把key替换成自己的再打开注释
# curl -s "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx" -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"【告警】传奇备份同步OSS失败!"}}'
fi
echo "" >> "${LOG_FILE}"
rm -f "${LOCK_FILE}"