File size: 1,628 Bytes
ecf967e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/sh
set -u

mkdir -p /root/.omniroute /data /root/.config/rclone

# 把 HF Secret 里的 rclone 配置写入文件
if [ -n "${RCLONE_CONF:-}" ]; then
  echo "$RCLONE_CONF" > /root/.config/rclone/rclone.conf
fi

# Google Drive 上的备份目录(remote 名:路径)
GD_REMOTE="gdrive:om-backup"

# ── 开机:从 Google Drive 拉取备份覆盖恢复 ──
rclone copy "$GD_REMOTE/omni_storage.sqlite"  /root/.omniroute/ --no-traverse 2>/dev/null \
  && mv -f /root/.omniroute/omni_storage.sqlite /root/.omniroute/storage.sqlite \
  && echo "✅ 从 GDrive 恢复 storage.sqlite" || echo "⚠️ GDrive 无 storage 备份,跳过"

rclone copy "$GD_REMOTE/omni_settings.json"  /root/.omniroute/ --no-traverse 2>/dev/null \
  && mv -f /root/.omniroute/omni_settings.json /root/.omniroute/settings.json \
  && echo "✅ 从 GDrive 恢复 settings.json" || echo "⚠️ GDrive 无 settings 备份,跳过"

# ── 每 60 秒:一致性快照后覆盖上传到 Google Drive ──
(while true; do
  sleep 60
  if [ -f /root/.omniroute/storage.sqlite ]; then
    if sqlite3 /root/.omniroute/storage.sqlite ".backup '/data/omni_storage.sqlite'" 2>/dev/null; then
      rclone copyto /data/omni_storage.sqlite "$GD_REMOTE/omni_storage.sqlite" 2>/dev/null \
        && echo "💾 [backup] storage.sqlite → GDrive(覆盖)"
    fi
  fi
  if [ -f /root/.omniroute/settings.json ]; then
    rclone copyto /root/.omniroute/settings.json "$GD_REMOTE/omni_settings.json" 2>/dev/null \
      && echo "💾 [backup] settings.json → GDrive(覆盖)"
  fi
done) &

node /app/download_server.js &
exec env PORT=8860 omniroute