File size: 2,715 Bytes
a0e366e 30b021f 4cd00cf a0e366e 4cd00cf 84d8c4b 96645ff a0e366e 4cd00cf a0e366e 4cd00cf 84d8c4b a0e366e 84d8c4b 4cd00cf 96645ff a0e366e 4cd00cf a0e366e 4cd00cf a0e366e 4cd00cf a0e366e 4cd00cf a0e366e 4cd00cf a0e366e 4cd00cf 84d8c4b a0e366e 96645ff a0e366e 96645ff a0e366e 4cd00cf 96645ff a0e366e 84d8c4b 4cd00cf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
#!/bin/bash
# 检查必要的环境变量
if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
echo "缺少必要的环境变量 WEBDAV_URL、WEBDAV_USERNAME 或 WEBDAV_PASSWORD"
exit 1
fi
mkdir -p ./data
# 从 WebDAV 下载webui.db文件
echo "正在从 WebDAV 下载数据库文件..."
curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
echo "下载失败,脚本退出"
exit 1
}
echo "下载成功"
# 定义同步函数
sync_data() {
SYNC_INTERVAL=${SYNC_INTERVAL:-21600} # 6小时
echo "初始下载完成,等待 ${SYNC_INTERVAL} 秒后开始同步..."
sleep $SYNC_INTERVAL
while true; do
echo "正在开始同步"
if [ -f "./data/webui.db" ]; then
FILE_NUMBER=$(($(date +%H) / 6))
FILENAME="webui_${FILE_NUMBER}.db"
DATE_STR=$(date +'%m_%d')
FILENAME_M_D="webui_${DATE_STR}.db"
echo "同步到 WebDAV..."
# 上传6小时命名的数据库文件
curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
echo " WebDAV (6小时命名) 上传成功: $FILENAME"
# 仅在0点上传日期备份
CURRENT_HOUR=$(date +%H)
if [ "$CURRENT_HOUR" -eq 0 ]; then
curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/year_all_month_day_data/$FILENAME_M_D" && {
echo " WebDAV (日期命名) 上传成功: $FILENAME_M_D"
} || {
echo " WebDAV(日期命名) 上传失败"
}
fi
# 覆盖默认主文件
curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" && {
echo " WebDAV 更新主文件成功"
} || {
echo " WebDAV 更新主文件失败"
}
} || {
echo " WebDAV(6小时命名)上传失败,等待重试..."
sleep 10
curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
echo "重试失败,放弃上传。"
}
}
else
echo "未找到 webui.db 文件,跳过同步"
fi
echo "当前时间 $(date '+%Y-%m-%d %H:%M:%S')"
echo "等待 ${SYNC_INTERVAL} 秒后进行下一次同步..."
sleep $SYNC_INTERVAL
done
}
# 后台启动同步进程
sync_data & |