MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
This commit is contained in:
229
docs/USER_UPLOAD_GUIDE.md
Normal file
229
docs/USER_UPLOAD_GUIDE.md
Normal file
@@ -0,0 +1,229 @@
|
||||
# 一键上传完整流程(用户操作指南)
|
||||
|
||||
## 您需要执行的3个步骤
|
||||
|
||||
---
|
||||
|
||||
## 步骤1:准备空目录(您运行命令)
|
||||
|
||||
**执行时机:** 上传前准备阶段
|
||||
|
||||
**您需要运行的命令:**
|
||||
|
||||
```bash
|
||||
# 格式1:从本地目录准备
|
||||
bash scripts/prepare_upload.sh "<您的目录路径>"
|
||||
|
||||
# 实际示例:
|
||||
# AccuSys Downloads目录
|
||||
bash scripts/prepare_upload.sh "/Users/accusys/Downloads/AccuSys Downloads"
|
||||
|
||||
# 从外部硬盘
|
||||
bash scripts/prepare_upload.sh "/Volumes/ExternalDrive/ProductFiles"
|
||||
|
||||
# 从服务器共享
|
||||
bash scripts/prepare_upload.sh "/Volumes/ServerShare/DownloadFiles"
|
||||
```
|
||||
|
||||
**执行结果:**
|
||||
- ✅ 所有空目录添加`.keep`文件
|
||||
- ✅ Nested目录自动处理(4层深度支持)
|
||||
- ✅ 输出处理统计信息
|
||||
|
||||
---
|
||||
|
||||
## 步骤2:上传文件夹(您操作浏览器)
|
||||
|
||||
**执行时机:** 准备完成后立即上传
|
||||
|
||||
**您需要操作的步骤:**
|
||||
|
||||
1. **打开浏览器访问:**
|
||||
```
|
||||
https://download.accusys.ddns.net/upload
|
||||
```
|
||||
|
||||
2. **填写User ID:**
|
||||
- 输入:`accusys`(或您的用户名)
|
||||
|
||||
3. **选择文件夹:**
|
||||
- 点击"Select Folder"按钮
|
||||
- 选择您准备好的文件夹
|
||||
- **重要:** 必须是包含`.keep`文件的文件夹
|
||||
|
||||
4. **开始上传:**
|
||||
- 点击"Start Upload"
|
||||
- 等待进度条完成
|
||||
|
||||
5. **上传完成:**
|
||||
- 所有文件上传成功
|
||||
- SHA256校验完成
|
||||
- 目录结构完整保留
|
||||
|
||||
---
|
||||
|
||||
## 步骤3:验证结果(您查看)
|
||||
|
||||
**执行时机:** 上传完成后验证
|
||||
|
||||
**您需要查看的内容:**
|
||||
|
||||
### Web界面验证:
|
||||
```
|
||||
https://download.accusys.ddns.net/files
|
||||
```
|
||||
|
||||
### API验证(可选):
|
||||
|
||||
```bash
|
||||
# 查看总文件数和总大小
|
||||
curl -s https://download.accusys.ddns.net/api/v2/files/accusys | jq '{
|
||||
"总文件数": .total_files,
|
||||
"总大小(KB)": (.total_size / 1024 | floor)
|
||||
}'
|
||||
|
||||
# 查看所有.keep文件(验证空目录)
|
||||
curl -s https://download.accusys.ddns.net/api/v2/files/accusys | \
|
||||
jq '.files[] | select(.filename == ".keep") | .relative_path'
|
||||
|
||||
# 查看nested目录
|
||||
curl -s https://download.accusys.ddns.net/api/v2/files/accusys | \
|
||||
jq '.files[] | select(.relative_path | contains("Level")) | .relative_path'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 实际操作示例(完整流程)
|
||||
|
||||
### 示例:上传AccuSys Downloads(290个文件)
|
||||
|
||||
```bash
|
||||
# === 步骤1:准备空目录 ===
|
||||
# 您运行此命令:
|
||||
bash scripts/prepare_upload.sh "/Users/accusys/Downloads/AccuSys Downloads"
|
||||
|
||||
# 输出:
|
||||
=== Preparing upload for /Users/accusys/Downloads/AccuSys Downloads ===
|
||||
|
||||
Added .keep in: ExaSAN-DAS/Model002/EmptyFolder
|
||||
Added .keep in: ExaSAN-DAS/EmptySubFolder
|
||||
Added .keep in: Gamma/EmptyFolder
|
||||
...
|
||||
|
||||
=== Preparation complete ===
|
||||
Empty directories: 0
|
||||
Total .keep files: 10
|
||||
Ready for webkitdirectory upload
|
||||
```
|
||||
|
||||
```bash
|
||||
# === 步骤2:上传文件夹 ===
|
||||
# 您操作浏览器:
|
||||
1. 打开 https://download.accusys.ddns.net/upload
|
||||
2. User ID: accusys
|
||||
3. Select Folder: 选择"AccuSys Downloads"
|
||||
4. Start Upload
|
||||
5. 等待完成(290个文件 + 10个.keep)
|
||||
|
||||
# 浏览器显示:
|
||||
Uploading: ExaSAN-DAS/Model001/readme.pdf
|
||||
Uploading: ExaSAN-DAS/Model002/EmptyFolder/.keep
|
||||
Uploading: Gamma/manual.pdf
|
||||
...
|
||||
Progress: 100% complete
|
||||
Total files: 300 uploaded
|
||||
```
|
||||
|
||||
```bash
|
||||
# === 步骤3:验证结果 ===
|
||||
# 您运行此命令验证:
|
||||
curl -s https://download.accusys.ddns.net/api/v2/files/accusys | jq '.total_files'
|
||||
|
||||
# 输出:
|
||||
300(290个文件 + 10个.keep)
|
||||
|
||||
# 查看目录结构:
|
||||
find /Users/accusys/Downloads/accusys -type d | head -20
|
||||
|
||||
# 输出:
|
||||
/Users/accusys/Downloads/accusys/ExaSAN-DAS
|
||||
/Users/accusys/Downloads/accusys/ExaSAN-DAS/Model001
|
||||
/Users/accusys/Downloads/accusys/ExaSAN-DAS/Model002
|
||||
/Users/accusys/Downloads/accusys/ExaSAN-DAS/Model002/EmptyFolder
|
||||
/Users/accusys/Downloads/accusys/ExaSAN-DAS/EmptySubFolder
|
||||
/Users/accusys/Downloads/accusys/Gamma
|
||||
/Users/accusys/Downloads/accusys/Gamma/EmptyFolder
|
||||
...
|
||||
|
||||
# 所有空目录完整保留 ✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nested目录支持验证
|
||||
|
||||
**测试多层嵌套空目录:**
|
||||
|
||||
```bash
|
||||
# 创建测试结构
|
||||
mkdir -p /tmp/test_nested/Level1/Level2/Level3/DeepEmpty
|
||||
mkdir -p /tmp/test_nested/Level1/Level2/EmptyAtLevel2
|
||||
|
||||
# 运行准备脚本
|
||||
bash scripts/prepare_upload.sh /tmp/test_nested
|
||||
|
||||
# 输出:
|
||||
Added .keep in: /tmp/test_nested/Level1/Level2/Level3/DeepEmpty
|
||||
Added .keep in: /tmp/test_nested/Level1/Level2/EmptyAtLevel2
|
||||
|
||||
# 上传后验证
|
||||
find /Users/accusys/Downloads/accusys -type d | grep Level
|
||||
|
||||
# 输出:
|
||||
/Users/accusys/Downloads/accusys/Level1
|
||||
/Users/accusys/Downloads/accusys/Level1/Level2
|
||||
/Users/accusys/Downloads/accusys/Level1/Level2/Level3
|
||||
/Users/accusys/Downloads/accusys/Level1/Level2/Level3/DeepEmpty
|
||||
/Users/accusys/Downloads/accusys/Level1/Level2/EmptyAtLevel2
|
||||
|
||||
# ✅ 4层nested目录完整保留
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常见问题解答
|
||||
|
||||
### Q1: 脚本在哪里?
|
||||
**答:** `/Users/accusys/markbase/scripts/prepare_upload.sh`
|
||||
|
||||
### Q2: 我需要什么权限?
|
||||
**答:** 只需要文件读取权限,无需sudo
|
||||
|
||||
### Q3: 准备后可以删除.keep吗?
|
||||
**答:** 可以,但建议保留(作为目录标记)
|
||||
|
||||
### Q4: Nested目录最多支持几层?
|
||||
**答:** 无限制(测试已验证4层深度成功)
|
||||
|
||||
### Q5: 上传时浏览器做什么?
|
||||
**答:** webkitdirectory自动选择所有文件(包括.keep)
|
||||
|
||||
---
|
||||
|
||||
## 责任分工总结
|
||||
|
||||
| 步骤 | 执行者 | 操作 |
|
||||
|------|--------|------|
|
||||
| **步骤1** | **您** | 运行`prepare_upload.sh` |
|
||||
| **步骤2** | **您** | 操作浏览器上传 |
|
||||
| **步骤3** | **您** | 查看验证结果 |
|
||||
| **系统** | MarkBase | 接收、存储、校验 |
|
||||
|
||||
---
|
||||
|
||||
**总结:您只需要运行prepare_upload.sh脚本,然后操作浏览器上传,系统自动处理所有nested空目录。**
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** 2026-06-09 15:00
|
||||
**Version:** 2.9 (完整操作流程指南)
|
||||
Reference in New Issue
Block a user