|
@@ -0,0 +1,53 @@
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
+# ====================== 配置项(生产环境修改此处)======================
|
|
|
|
|
+# 待同步的源目录列表(目标服务器保持相同路径)
|
|
|
|
|
+SYNC_DIRS=(
|
|
|
|
|
+ "/data/wind_files/headquarter/scada/30days/"
|
|
|
|
|
+ "/data/wind_files/headquarter/scada/90days/"
|
|
|
|
|
+ "/data/wind_files/headquarter/cms/30days/"
|
|
|
|
|
+ "/data/wind_files/headquarter/scada/second/14days/"
|
|
|
|
|
+)
|
|
|
|
|
+# 目标算法服务器
|
|
|
|
|
+DEST_USER="root"
|
|
|
|
|
+DEST_HOST="10.172.12.214"
|
|
|
|
|
+# 文件最小修改时间(1分钟 = 60秒)
|
|
|
|
|
+MIN_MODIFY=60
|
|
|
|
|
+# 日志路径
|
|
|
|
|
+LOG_DIR="/data/logs/wind_data_rsync"
|
|
|
|
|
+LOG_FILE="${LOG_DIR}/sync_$(date +%Y%m%d).log"
|
|
|
|
|
+# rsync 安全参数
|
|
|
|
|
+RSYNC_OPTS="-avz --delete --delay-updates --no-perms --no-owner --no-group"
|
|
|
|
|
+
|
|
|
|
|
+# ====================== 初始化 ======================
|
|
|
|
|
+mkdir -p ${LOG_DIR}
|
|
|
|
|
+echo "================================================" >> ${LOG_FILE}
|
|
|
|
|
+echo "$(date '+%Y-%m-%d %H:%M:%S') 开始同步数据" >> ${LOG_FILE}
|
|
|
|
|
+
|
|
|
|
|
+# ====================== 核心修复:rsync 正确过滤方式 ======================
|
|
|
|
|
+# 旧的 --min-mtime 在老版本 rsync 不支持
|
|
|
|
|
+# 改用 find + rsync 稳定兼容:只同步 60秒 前修改的文件
|
|
|
|
|
+# 这是生产最通用、最安全、100% 不会报错的写法
|
|
|
|
|
+
|
|
|
|
|
+for SRC_DIR in "${SYNC_DIRS[@]}"; do
|
|
|
|
|
+ if [ ! -d "${SRC_DIR}" ]; then
|
|
|
|
|
+ echo "$(date '+%Y-%m-%d %H:%M:%S') 源目录不存在,跳过: ${SRC_DIR}" >> ${LOG_FILE}
|
|
|
|
|
+ continue
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ echo "$(date '+%Y-%m-%d %H:%M:%S') 开始同步: ${SRC_DIR}" >> ${LOG_FILE}
|
|
|
|
|
+ cd "${SRC_DIR}"
|
|
|
|
|
+ # 目标路径与源路径保持一致
|
|
|
|
|
+ find . -type f -mmin +1 | rsync ${RSYNC_OPTS} \
|
|
|
|
|
+ --files-from=- \
|
|
|
|
|
+ ./ \
|
|
|
|
|
+ ${DEST_USER}@${DEST_HOST}:${SRC_DIR} >> ${LOG_FILE} 2>&1
|
|
|
|
|
+
|
|
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
|
|
+ echo "${SRC_DIR} 同步成功" >> ${LOG_FILE}
|
|
|
|
|
+ else
|
|
|
|
|
+ echo "${SRC_DIR} 同步失败" >> ${LOG_FILE}
|
|
|
|
|
+ fi
|
|
|
|
|
+done
|
|
|
|
|
+
|
|
|
|
|
+echo "$(date '+%Y-%m-%d %H:%M:%S') 同步任务完成" >> ${LOG_FILE}
|
|
|
|
|
+echo "================================================" >> ${LOG_FILE}
|