Spaces:
Running
Running
| 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 | |