61 lines
1.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"