File size: 3,033 Bytes
a2d546a 30b021f 96645ff a2d546a 96645ff a2d546a 96645ff a2d546a 96645ff a2d546a 96645ff a2d546a 96645ff d203610 a2d546a 6fc5fd2 2004340 a2d546a 96645ff 2004340 a2d546a 3e63aa7 a2d546a 2004340 3e63aa7 2004340 3e63aa7 2004340 3e63aa7 2004340 a2d546a 3e63aa7 a2d546a 3e63aa7 96645ff a2d546a 96645ff a2d546a 96645ff a2d546a 47c9490 96645ff |
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 78 |
#!/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:-7200} # 默认间隔时间为 7200 秒
echo "初始下载完成,等待 ${SYNC_INTERVAL} 秒后开始同步..."
sleep $SYNC_INTERVAL
while true; do
echo "正在开始同步"
# 检查数据库文件是否存在
if [ -f "./data/webui.db" ]; then
# 生成当前时间的文件名
# 计算文件编号(0-11,每2小时递增1)(2个小时备份一次)
FILE_NUMBER=$(($(date +%H) / 2))
FILENAME="webui_${FILE_NUMBER}.db"
# 计算文件编号(日期)
DATE_STR=$(date +'%m_%d')
FILENAME_M_D="webui_${DATE_STR}.db"
echo "同步到 WebDAV..."
# 上传以小时命名的数据库文件
curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
echo " WebDAV (小时命名) 上传成功: $FILENAME"
# 上传以日期命名的数据库文件
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"
# 覆盖Webdav目录下默认的webui.db文件(方便下次拉取的时候就是最新版本)
curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" && {
echo " WebDAV 更新主文件成功"
} || {
echo " WebDAV 更新主文件失败"
}
} || {
echo " WebDAV(日期命名) 上传失败"
}
} || {
echo " WebDAV(小时命名)上传失败,等待重试..."
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 & |