gaojintao01 commited on
Commit ·
420c7cb
1
Parent(s): 7126dfc
yh
Browse files- .env.example +0 -0
- AGENTS.md +259 -0
- Dockerfile +2 -0
- entrypoint.sh +7 -2
- scripts/backup.sh +11 -2
- scripts/restore.sh +8 -3
.env.example
ADDED
|
Binary file (5.17 kB). View file
|
|
|
AGENTS.md
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# AI代理系统文档
|
| 2 |
+
|
| 3 |
+
## 项目概述
|
| 4 |
+
|
| 5 |
+
这是一个基于AnythingLLM的智能RAG(检索增强生成)系统,专为企业级知识管理和智能问答场景设计。该系统提供了完整的备份、恢复和监控功能,确保数据的安全性和服务的可靠性。
|
| 6 |
+
|
| 7 |
+
## 系统架构
|
| 8 |
+
|
| 9 |
+
### 核心组件
|
| 10 |
+
|
| 11 |
+
1. **AnythingLLM核心引擎**
|
| 12 |
+
- 基于官方`mintplexlabs/anythingllm:latest`镜像
|
| 13 |
+
- 提供强大的文档处理和向量检索能力
|
| 14 |
+
- 支持多种文件格式和数据源
|
| 15 |
+
|
| 16 |
+
2. **自动化备份系统**
|
| 17 |
+
- **实时数据保护**:SQLite数据库热备份
|
| 18 |
+
- **多重备份策略**:支持GitHub和WebDAV双备份
|
| 19 |
+
- **智能暂存机制**:使用临时目录进行安全的数据转储
|
| 20 |
+
|
| 21 |
+
3. **智能恢复机制**
|
| 22 |
+
- **优先级备份恢复**:WebDAV → GitHub逐级回退
|
| 23 |
+
- **完整性验证**:确保备份数据的有效性
|
| 24 |
+
- **零停机恢复**:容器重启时自动恢复数据
|
| 25 |
+
|
| 26 |
+
### 技术栈
|
| 27 |
+
|
| 28 |
+
```mermaid
|
| 29 |
+
graph TB
|
| 30 |
+
A[Docker容器] --> B[AnythingLLM核心]
|
| 31 |
+
B --> C[文档处理引擎]
|
| 32 |
+
B --> D[向量检索系统]
|
| 33 |
+
C --> E[多格式文件支持]
|
| 34 |
+
D --> F[智能问答接口]
|
| 35 |
+
|
| 36 |
+
G[备份系统] --> H[实时监控]
|
| 37 |
+
G --> I[GitHub备份]
|
| 38 |
+
G --> J[WebDAV备份]
|
| 39 |
+
H --> K[健康检查]
|
| 40 |
+
I --> L[版本控制]
|
| 41 |
+
J --> M[云存储]
|
| 42 |
+
|
| 43 |
+
N[恢复系统] --> O[自动检测]
|
| 44 |
+
N --> P[数据验证]
|
| 45 |
+
N --> Q[无缝部署]
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
## 配置指南
|
| 49 |
+
|
| 50 |
+
### 环境变量配置
|
| 51 |
+
|
| 52 |
+
#### 必需配置
|
| 53 |
+
|
| 54 |
+
| 变量名 | 描述 | 示例 |
|
| 55 |
+
|--------|------|------|
|
| 56 |
+
| `GITHUB_REPO` | GitHub仓库地址 | `username/repo-name` |
|
| 57 |
+
| `GITHUB_TOKEN` | GitHub个人访问令牌 | `ghp_xxxxxxxxxxxxxxxx` |
|
| 58 |
+
|
| 59 |
+
#### 可选配置
|
| 60 |
+
|
| 61 |
+
| 变量名 | 描述 | 示例 |
|
| 62 |
+
|--------|------|------|
|
| 63 |
+
| `WEBDAV_URL` | WebDAV服务地址 | `https://dav.example.com` |
|
| 64 |
+
| `WEBDAV_USER` | WebDAV用户名 | `backup_user` |
|
| 65 |
+
| `WEBDAV_PASS` | WebDAV密码 | `secure_password` |
|
| 66 |
+
| `BACKUP_INTERVAL` | 备份间隔(秒) | `3600` |
|
| 67 |
+
| `HEALTHCHECK_URL` | 健康检查URL | `https://api.example.com/health` |
|
| 68 |
+
|
| 69 |
+
### 备份策略配置
|
| 70 |
+
|
| 71 |
+
#### GitHub备份
|
| 72 |
+
|
| 73 |
+
```bash
|
| 74 |
+
# 环境变量设置
|
| 75 |
+
GITHUB_REPO="mycompany/knowledge-base"
|
| 76 |
+
GITHUB_TOKEN="ghp_your_github_token_here"
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
#### WebDAV备份
|
| 80 |
+
|
| 81 |
+
```bash
|
| 82 |
+
# 环境变量设置
|
| 83 |
+
WEBDAV_URL="https://dav.example.com/backup"
|
| 84 |
+
WEBDAV_USER="backup_user"
|
| 85 |
+
WEBDAV_PASS="your_webdav_password"
|
| 86 |
+
```
|
| 87 |
+
|
| 88 |
+
## 使用指南
|
| 89 |
+
|
| 90 |
+
### 1. 初次部署
|
| 91 |
+
|
| 92 |
+
```bash
|
| 93 |
+
# 构建镜像
|
| 94 |
+
docker build -t anythingllm-backup .
|
| 95 |
+
|
| 96 |
+
# 运行容器
|
| 97 |
+
docker run -d \
|
| 98 |
+
--name anythingllm-wiki \
|
| 99 |
+
-p 3001:3001 \
|
| 100 |
+
-e GITHUB_REPO="your/repo" \
|
| 101 |
+
-e GITHUB_TOKEN="your_token" \
|
| 102 |
+
-e WEBDAV_URL="https://your-dav.com" \
|
| 103 |
+
-e WEBDAV_USER="user" \
|
| 104 |
+
-e WEBDAV_PASS="pass" \
|
| 105 |
+
-v anythingllm-data:/data \
|
| 106 |
+
anythingllm-backup
|
| 107 |
+
```
|
| 108 |
+
|
| 109 |
+
### 2. 数据管理
|
| 110 |
+
|
| 111 |
+
#### 文档上传
|
| 112 |
+
1. 访问应用界面:`http://your-server:3001`
|
| 113 |
+
2. 在工作空间中上传文档
|
| 114 |
+
3. 系统自动建立向量索引
|
| 115 |
+
|
| 116 |
+
#### 智能问答
|
| 117 |
+
- 支持自然语言查询
|
| 118 |
+
- 自动上下文理解
|
| 119 |
+
- 多文档关联检索
|
| 120 |
+
|
| 121 |
+
### 3. 监控与维护
|
| 122 |
+
|
| 123 |
+
#### 健康检查
|
| 124 |
+
```bash
|
| 125 |
+
# 查看容器日志
|
| 126 |
+
docker logs anythingllm-wiki
|
| 127 |
+
|
| 128 |
+
# 检查备份状态
|
| 129 |
+
docker logs anythingllm-wiki | grep "Backup"
|
| 130 |
+
```
|
| 131 |
+
|
| 132 |
+
#### 数据备份验证
|
| 133 |
+
```bash
|
| 134 |
+
# 检查GitHub备份
|
| 135 |
+
curl -H "Authorization: token $GITHUB_TOKEN" \
|
| 136 |
+
https://api.github.com/repos/$GITHUB_REPO/commits
|
| 137 |
+
|
| 138 |
+
# 检查WebDAV备份
|
| 139 |
+
rclone ls webdav:your-backup-path
|
| 140 |
+
```
|
| 141 |
+
|
| 142 |
+
## 高级配置
|
| 143 |
+
|
| 144 |
+
### 自定义备份频率
|
| 145 |
+
|
| 146 |
+
```bash
|
| 147 |
+
# 每小时备份一次(默认)
|
| 148 |
+
BACKUP_INTERVAL=3600
|
| 149 |
+
|
| 150 |
+
# 每30分钟备份一次
|
| 151 |
+
BACKUP_INTERVAL=1800
|
| 152 |
+
|
| 153 |
+
# 每天备份一次
|
| 154 |
+
BACKUP_INTERVAL=86400
|
| 155 |
+
```
|
| 156 |
+
|
| 157 |
+
### 多备份源配置
|
| 158 |
+
|
| 159 |
+
系统支持同时配置多个备份目标:
|
| 160 |
+
|
| 161 |
+
```bash
|
| 162 |
+
# 同时启用GitHub和WebDAV备份
|
| 163 |
+
GITHUB_REPO="company/kb"
|
| 164 |
+
GITHUB_TOKEN="token123"
|
| 165 |
+
WEBDAV_URL="https://dav.company.com"
|
| 166 |
+
WEBDAV_USER="backup"
|
| 167 |
+
WEBDAV_PASS="secure123"
|
| 168 |
+
```
|
| 169 |
+
|
| 170 |
+
### 恢复优先级
|
| 171 |
+
|
| 172 |
+
系统按以下优先级尝试恢复:
|
| 173 |
+
1. **WebDAV备份**(首选,速度更快)
|
| 174 |
+
2. **GitHub备份**(备选,版本控制)
|
| 175 |
+
3. **全新启动**(无备份时)
|
| 176 |
+
|
| 177 |
+
## 故障排除
|
| 178 |
+
|
| 179 |
+
### 常见问题
|
| 180 |
+
|
| 181 |
+
#### 备份失败
|
| 182 |
+
```bash
|
| 183 |
+
# 检查网络连接
|
| 184 |
+
ping github.com
|
| 185 |
+
|
| 186 |
+
# 验证凭据
|
| 187 |
+
curl -H "Authorization: token $GITHUB_TOKEN" \
|
| 188 |
+
https://api.github.com/user
|
| 189 |
+
|
| 190 |
+
# 查看详细日志
|
| 191 |
+
docker logs anythingllm-wiki --tail 100
|
| 192 |
+
```
|
| 193 |
+
|
| 194 |
+
#### 恢复失败
|
| 195 |
+
```bash
|
| 196 |
+
# 检查备份完整性
|
| 197 |
+
rclone check webdav:backup-path /tmp/check
|
| 198 |
+
|
| 199 |
+
# 手动恢复
|
| 200 |
+
docker run --rm -it \
|
| 201 |
+
-e GITHUB_REPO="your/repo" \
|
| 202 |
+
-e GITHUB_TOKEN="your_token" \
|
| 203 |
+
anythingllm-backup \
|
| 204 |
+
/app/scripts/restore.sh
|
| 205 |
+
```
|
| 206 |
+
|
| 207 |
+
### 性能优化
|
| 208 |
+
|
| 209 |
+
#### 内存优化
|
| 210 |
+
```bash
|
| 211 |
+
# 增加容器内存限制
|
| 212 |
+
docker run -m 2g ...
|
| 213 |
+
|
| 214 |
+
# 调整备份并发
|
| 215 |
+
# 编辑backup.sh中的rsync参数
|
| 216 |
+
```
|
| 217 |
+
|
| 218 |
+
#### 存储优化
|
| 219 |
+
```bash
|
| 220 |
+
# 使用SSD存储类
|
| 221 |
+
- storage:
|
| 222 |
+
name: anythingllm-ssd
|
| 223 |
+
class: fast-ssd
|
| 224 |
+
size: 50Gi
|
| 225 |
+
```
|
| 226 |
+
|
| 227 |
+
## 安全建议
|
| 228 |
+
|
| 229 |
+
### 访问控制
|
| 230 |
+
- 使用强密码和��牌
|
| 231 |
+
- 定期轮换凭据
|
| 232 |
+
- 启用两因素认证
|
| 233 |
+
|
| 234 |
+
### 数据加密
|
| 235 |
+
- 使用HTTPS传输
|
| 236 |
+
- 加密存储敏感配置
|
| 237 |
+
- 定期备份加密密钥
|
| 238 |
+
|
| 239 |
+
### 网络安全
|
| 240 |
+
- 限制容器网络访问
|
| 241 |
+
- 使用防火墙规则
|
| 242 |
+
- 监控异常活动
|
| 243 |
+
|
| 244 |
+
## 贡献指南
|
| 245 |
+
|
| 246 |
+
欢迎提交问题和改进建议:
|
| 247 |
+
|
| 248 |
+
1. 在GitHub上创建Issue
|
| 249 |
+
2. 提交详细的错误描述
|
| 250 |
+
3. 提供复现步骤
|
| 251 |
+
4. 附上相关日志片段
|
| 252 |
+
|
| 253 |
+
## 许可证
|
| 254 |
+
|
| 255 |
+
本项目采用开源许可证,详见LICENSE文件。
|
| 256 |
+
|
| 257 |
+
---
|
| 258 |
+
|
| 259 |
+
*最后更新:2025年10月13日*
|
Dockerfile
CHANGED
|
@@ -10,12 +10,14 @@ USER root
|
|
| 10 |
# util-linux: 提供 flock 文件锁工具
|
| 11 |
# sqlite3: 用于安全的数据库在线备份
|
| 12 |
# rsync: 用于高效、安全地在目录间同步文件
|
|
|
|
| 13 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 14 |
git \
|
| 15 |
rclone \
|
| 16 |
util-linux \
|
| 17 |
sqlite3 \
|
| 18 |
rsync \
|
|
|
|
| 19 |
&& rm -rf /var/lib/apt/lists/*
|
| 20 |
|
| 21 |
# 4. 创建脚本目录
|
|
|
|
| 10 |
# util-linux: 提供 flock 文件锁工具
|
| 11 |
# sqlite3: 用于安全的数据库在线备份
|
| 12 |
# rsync: 用于高效、安全地在目录间同步文件
|
| 13 |
+
# curl: 用于健康检查
|
| 14 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 15 |
git \
|
| 16 |
rclone \
|
| 17 |
util-linux \
|
| 18 |
sqlite3 \
|
| 19 |
rsync \
|
| 20 |
+
curl \
|
| 21 |
&& rm -rf /var/lib/apt/lists/*
|
| 22 |
|
| 23 |
# 4. 创建脚本目录
|
entrypoint.sh
CHANGED
|
@@ -5,12 +5,17 @@ echo "[Entrypoint] Starting container setup..."
|
|
| 5 |
|
| 6 |
# 步骤 1: 执行数据恢复脚本
|
| 7 |
echo "[Entrypoint] Running data restoration script..."
|
| 8 |
-
/app/scripts/restore.sh
|
|
|
|
|
|
|
| 9 |
|
| 10 |
# 步骤 2: 在后台启动循环备份脚本
|
| 11 |
echo "[Entrypoint] Starting background backup process..."
|
| 12 |
/app/scripts/backup.sh &
|
| 13 |
|
| 14 |
-
# 步骤 3: 启动
|
|
|
|
|
|
|
|
|
|
| 15 |
echo "[Entrypoint] Handing over control to AnythingLLM server..."
|
| 16 |
exec node /app/server/index.js
|
|
|
|
| 5 |
|
| 6 |
# 步骤 1: 执行数据恢复脚本
|
| 7 |
echo "[Entrypoint] Running data restoration script..."
|
| 8 |
+
if ! /app/scripts/restore.sh; then
|
| 9 |
+
echo "[Error] Data restoration failed, but continuing with startup..."
|
| 10 |
+
fi
|
| 11 |
|
| 12 |
# 步骤 2: 在后台启动循环备份脚本
|
| 13 |
echo "[Entrypoint] Starting background backup process..."
|
| 14 |
/app/scripts/backup.sh &
|
| 15 |
|
| 16 |
+
# 步骤 3: 等待备份进程启动
|
| 17 |
+
sleep 2
|
| 18 |
+
|
| 19 |
+
# 步骤 4: 启动 AnythingLLM 主应用
|
| 20 |
echo "[Entrypoint] Handing over control to AnythingLLM server..."
|
| 21 |
exec node /app/server/index.js
|
scripts/backup.sh
CHANGED
|
@@ -9,6 +9,7 @@ sleep 90
|
|
| 9 |
|
| 10 |
# --- 主循环 ---
|
| 11 |
while true; do
|
|
|
|
| 12 |
flock -n /tmp/backup.lock bash -c '
|
| 13 |
set -e
|
| 14 |
echo "--- [$(date)] Starting Scheduled Backup ---"
|
|
@@ -25,7 +26,15 @@ while true; do
|
|
| 25 |
|
| 26 |
# --- 步骤 2: 安全地创建数据库快照并复制到暂存区 ---
|
| 27 |
echo "[Backup] Creating a safe snapshot of the SQLite database..."
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
sqlite3 "${LIVE_DB_FILE}" ".backup '${STAGE_DIR}/anythingllm.db'"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
# --- 步骤 3: 将线上数据目录同步到暂存区 ---
|
| 31 |
echo "[Backup] Syncing live data to the staging area..."
|
|
@@ -47,7 +56,7 @@ while true; do
|
|
| 47 |
git init -b main
|
| 48 |
git config --global user.email "backup-bot@example.com"
|
| 49 |
git config --global user.name "Backup Bot"
|
| 50 |
-
git remote add origin https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO
|
| 51 |
fi
|
| 52 |
git add .
|
| 53 |
if ! git diff-index --quiet HEAD --; then
|
|
@@ -70,6 +79,6 @@ while true; do
|
|
| 70 |
fi
|
| 71 |
|
| 72 |
echo "--- [$(date)] Backup Finished ---"
|
| 73 |
-
'
|
| 74 |
sleep ${BACKUP_INTERVAL:-3600}
|
| 75 |
done
|
|
|
|
| 9 |
|
| 10 |
# --- 主循环 ---
|
| 11 |
while true; do
|
| 12 |
+
# 将环境变量传递给flock内部
|
| 13 |
flock -n /tmp/backup.lock bash -c '
|
| 14 |
set -e
|
| 15 |
echo "--- [$(date)] Starting Scheduled Backup ---"
|
|
|
|
| 26 |
|
| 27 |
# --- 步骤 2: 安全地创建数据库快照并复制到暂存区 ---
|
| 28 |
echo "[Backup] Creating a safe snapshot of the SQLite database..."
|
| 29 |
+
if [ ! -f "${LIVE_DB_FILE}" ]; then
|
| 30 |
+
echo "[Error] Database file not found: ${LIVE_DB_FILE}"
|
| 31 |
+
exit 1
|
| 32 |
+
fi
|
| 33 |
sqlite3 "${LIVE_DB_FILE}" ".backup '${STAGE_DIR}/anythingllm.db'"
|
| 34 |
+
if [ $? -ne 0 ]; then
|
| 35 |
+
echo "[Error] Failed to create database backup"
|
| 36 |
+
exit 1
|
| 37 |
+
fi
|
| 38 |
|
| 39 |
# --- 步骤 3: 将线上数据目录同步到暂存区 ---
|
| 40 |
echo "[Backup] Syncing live data to the staging area..."
|
|
|
|
| 56 |
git init -b main
|
| 57 |
git config --global user.email "backup-bot@example.com"
|
| 58 |
git config --global user.name "Backup Bot"
|
| 59 |
+
git remote add origin https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}
|
| 60 |
fi
|
| 61 |
git add .
|
| 62 |
if ! git diff-index --quiet HEAD --; then
|
|
|
|
| 79 |
fi
|
| 80 |
|
| 81 |
echo "--- [$(date)] Backup Finished ---"
|
| 82 |
+
' "${BACKUP_INTERVAL:-3600}"
|
| 83 |
sleep ${BACKUP_INTERVAL:-3600}
|
| 84 |
done
|
scripts/restore.sh
CHANGED
|
@@ -11,8 +11,13 @@ RESTORE_SOURCE="" # 将用于标记最终从哪里恢复
|
|
| 11 |
|
| 12 |
# --- 步骤 1: 强制清理线上旧数据和暂存区 ---
|
| 13 |
echo "[Restore] Forcing a clean slate..."
|
| 14 |
-
rm -rf "${LIVE_DATA_DIR}" "${LIVE_DB_FILE}" "${STAGE_DIR}"
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
# --- 步骤 2: 尝试从 WebDAV 恢复到暂存区 ---
|
| 18 |
if [ -n "${WEBDAV_URL}" ]; then
|
|
@@ -33,7 +38,7 @@ fi
|
|
| 33 |
# --- 步骤 3: 如果 WebDAV 未成功,尝试从 GitHub 恢复 ---
|
| 34 |
if [ -z "${RESTORE_SOURCE}" ] && [ -n "${GITHUB_REPO}" ]; then
|
| 35 |
echo "[Restore] Attempting to restore from GitHub to staging area..."
|
| 36 |
-
if git clone https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO
|
| 37 |
if [ -f "${STAGE_DIR}/anythingllm.db" ]; then
|
| 38 |
echo "[Restore] GitHub restore to staging area successful."
|
| 39 |
RESTORE_SOURCE="${STAGE_DIR}"
|
|
|
|
| 11 |
|
| 12 |
# --- 步骤 1: 强制清理线上旧数据和暂存区 ---
|
| 13 |
echo "[Restore] Forcing a clean slate..."
|
| 14 |
+
rm -rf "${LIVE_DATA_DIR}" "${LIVE_DB_FILE}" "${STAGE_DIR}" || {
|
| 15 |
+
echo "[Warning] Failed to clean some directories, continuing anyway..."
|
| 16 |
+
}
|
| 17 |
+
mkdir -p "${STAGE_DIR}" || {
|
| 18 |
+
echo "[Error] Failed to create staging directory"
|
| 19 |
+
exit 1
|
| 20 |
+
}
|
| 21 |
|
| 22 |
# --- 步骤 2: 尝试从 WebDAV 恢复到暂存区 ---
|
| 23 |
if [ -n "${WEBDAV_URL}" ]; then
|
|
|
|
| 38 |
# --- 步骤 3: 如果 WebDAV 未成功,尝试从 GitHub 恢复 ---
|
| 39 |
if [ -z "${RESTORE_SOURCE}" ] && [ -n "${GITHUB_REPO}" ]; then
|
| 40 |
echo "[Restore] Attempting to restore from GitHub to staging area..."
|
| 41 |
+
if git clone https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO} "${STAGE_DIR}"; then
|
| 42 |
if [ -f "${STAGE_DIR}/anythingllm.db" ]; then
|
| 43 |
echo "[Restore] GitHub restore to staging area successful."
|
| 44 |
RESTORE_SOURCE="${STAGE_DIR}"
|