#!/bin/bash # --- 1. 参数与环境检查 --- LOG_PREFIX="[Koishi-Cloud-Sync]" if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then echo "$LOG_PREFIX [WARN] WebDAV 未配置,直接启动 Koishi。" exec yarn start fi # 确保路径不以斜杠结尾 CLEAN_URL=$(echo "${WEBDAV_URL}" | sed 's:/*$::') WEBDAV_BACKUP_PATH=${WEBDAV_BACKUP_PATH:-""} FULL_WEBDAV_URL="${CLEAN_URL}${WEBDAV_BACKUP_PATH:+/$WEBDAV_BACKUP_PATH}" # 统一前缀名 (确保恢复和备份用的是同一个) FILE_PREFIX="koishi_backup_" # --- 2. 启动前恢复备份 --- restore_backup() { echo "$LOG_PREFIX [Restore] 正在从 WebDAV 恢复数据..." python3 < 5: for old_file in files[:-5]: client.clean(old_file) print(f"$LOG_PREFIX [Clean] 已删除旧备份: {old_file}") except Exception as e: print(f"$LOG_PREFIX [Error] 上传过程中出错: {e}") EOF rm -f "$local_tmp" # 默认 2 小时同步一次 echo "$LOG_PREFIX [Sync] 本次任务结束,等待下一次循环..." sleep ${SYNC_INTERVAL:-7200} done } # --- 执行流 --- restore_backup # 启动备份进程 (后台) sync_loop & # 启动 Koishi (前台) echo "$LOG_PREFIX 正在启动 Koishi 服务..." exec yarn start