#!/usr/bin/env sh set -eu ROOT_DIR="${ROOT_DIR:-/app}" # HF Spaces 持久化目录 DATA_DIR="${DATA_DIR:-/data}" # 确保 /data 目录存在且可写;HF Space 未挂载持久存储时回退到 /app/data_local if [ ! -d "$DATA_DIR" ] || [ ! -w "$DATA_DIR" ]; then DATA_DIR="$ROOT_DIR/data_local" fi mkdir -p "$DATA_DIR" # 软链接 /app/data -> $DATA_DIR 让应用写入持久化存储 if [ ! -L "$ROOT_DIR/data" ] && [ -d "$ROOT_DIR/data" ]; then # 迁移已有数据 cp -an "$ROOT_DIR/data/." "$DATA_DIR/" 2>/dev/null || true rm -rf "$ROOT_DIR/data" fi ln -sfn "$DATA_DIR" "$ROOT_DIR/data" # 持久化 config.json:首次运行从镜像复制默认配置到 $DATA_DIR,后续使用 $DATA_DIR 中的配置 if [ ! -f "$DATA_DIR/config.json" ]; then cp "$ROOT_DIR/config.json" "$DATA_DIR/config.json" 2>/dev/null || true fi # 用 $DATA_DIR/config.json 覆盖镜像中的配置(实现持久化) cp -f "$DATA_DIR/config.json" "$ROOT_DIR/config.json" 2>/dev/null || true chmod 600 "$DATA_DIR/config.json" 2>/dev/null || true chmod 600 "$ROOT_DIR/config.json" 2>/dev/null || true # 输出实际使用的存储路径,便于排查 echo "[init_storage_hf] Using DATA_DIR=$DATA_DIR" echo "[init_storage_hf] /app/data -> $(readlink -f "$ROOT_DIR/data" 2>/dev/null || echo "$DATA_DIR")"