File size: 1,313 Bytes
c47ec10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/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")"