#!/bin/bash

# 设置远程服务器信息
REMOTE_USER="root"
REMOTE_HOST="8.134.185.53"
REMOTE_PORT="30001"
REMOTE_PATH="/root/rain/weather-station/dataTransfer/data/"
LOCAL_PATH="/home/imdroid/Build_WRF/cycling_data"  # 使用当前目录
LOG_FILE="${LOCAL_PATH}/sync.log"

# 确保本地目录存在
mkdir -p "$LOCAL_PATH"

# 记录开始时间
echo "=== 开始同步: $(date) ===" >> "$LOG_FILE"

# 使用rsync进行增量同步
# -a: 归档模式，保持所有文件属性
# -v: 详细输出
# -z: 传输时压缩数据
# -t: 保持时间戳
# -P: 显示进度并允许断点续传
# -e: 指定ssh命令和端口
# --delete: 删除目标目录中源目录没有的文件
# --timeout=60: 设置超时时间
# --bwlimit=1000: 限制带宽（KB/s）
rsync -avzt \
    -P \
    -e "ssh -p ${REMOTE_PORT}" \
    --delete \
    --timeout=60 \
    --bwlimit=1000 \
    --include="*.csv" \
    --include="*.gz" \
    --exclude="*" \
    --log-file="$LOG_FILE" \
    "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}" \
    "${LOCAL_PATH}/"

# 检查rsync退出状态
if [ $? -eq 0 ]; then
    echo "同步成功完成" >> "$LOG_FILE"
    
    # 检查是否有新文件同步
    NEW_FILES=$(find "${LOCAL_PATH}" -type f -mmin -10 \( -name "*.csv" -o -name "*.gz" \))
    if [ ! -z "$NEW_FILES" ]; then
        echo "新同步的文件:" >> "$LOG_FILE"
        echo "$NEW_FILES" >> "$LOG_FILE"
    fi
else
    echo "同步失败，错误代码: $?" >> "$LOG_FILE"
    # 可以在这里添加告警通知（如发送邮件）
fi

# 记录同步时间
echo "=== 结束同步: $(date) ===" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"

# 保持日志文件大小合理（保留最后1000行）
tail -n 1000 "$LOG_FILE" > "${LOG_FILE}.tmp" && mv "${LOG_FILE}.tmp" "$LOG_FILE"
