请确认以下事项
需求描述
[Feature] 跨 Storage Copy 支持单文件多连接传输
背景
OpenList挂载的公共网盘上,存在大量 .zip、.iso、.mp4等大文件,有时需要归集到NAS本地,目前通过跨storage 复制到挂载的NAS本地路径上大文件性能较低,经常得通过aria2离线下载方式“曲线救国”,通过ChatGPT分析了一下当前实现,特提功能建议,以下由ChatGPT根据我的需求描述生成:
OpenList 当前已经支持通过 tasks.copy.workers 并发执行多个 Copy Task。
但对于单个超大文件,增加 copy.workers 并不能提高该文件本身的传输并发度。
例如:
可以同时复制 5 个文件,但一个 100 GB 文件仍然主要依赖单一传输链路。
对于“公共网盘 → 本地 NAS”的场景,这可能成为单个大文件的吞吐瓶颈。
建议
希望跨 Storage Copy 支持单文件分段 / Range 多连接传输。
例如:
Source Storage
│
├── Range 0 ──┐
├── Range 1 ──┤
├── Range 2 ──┼──→ OpenList → Destination Storage
└── Range 3 ──┘
实现思路
建议增加类似:
tasks:
copy:
workers: 5
connections: 4
其中:
workers:同时执行多少个 Copy Task / 文件;
connections:单个文件使用多少个并发连接。
两者应该相互独立。
Aria2 也可以作为一种实现方案
OpenList 当前已经具备 Aria2 Offline Download 能力。
因此也可以考虑在跨 Storage Copy 中,对于满足条件的文件:
Public Cloud Storage
↓
Link()
↓
Aria2 / Range
↓
Local temporary file
↓
Destination Storage
利用 Aria2 的多连接下载能力完成单文件高速传输,然后再移动/导入到目标 Storage。
如果采用这种方式,希望能够:
- 复用现有 Aria2 配置;
- 支持 Aria2 多连接/分段下载;
- 正确显示 Copy Task 的总体进度;
- 下载完成后自动进入目标 Storage;
- 失败时能够重试;
- 不支持 Range 或无法使用 Aria2 时自动回退到当前 Copy 实现。
如果直接在 OpenList 的 Copy pipeline 中实现 Range 并发,而不经过 Aria2,同样可以接受。
这里更重要的是实现单文件多连接传输能力,而不是限定具体实现方式。
使用场景
例如:
对于多个小文件:
对于单个大文件:
connections
↓
同一个文件使用多个连接
因此需要同时支持:
兼容性建议
并不是所有 Storage Driver 都支持 Range,因此建议根据实际能力自动选择:
-
Source Driver 支持 Range / Seek,并且 URL 支持 HTTP Range:
-
可以通过 Aria2 获取并发下载:
-
不支持上述能力:
不应影响现有 Storage Driver 和 Copy 行为。
进度
如果采用分段或 Aria2 下载,希望 Copy Task 能正确显示:
- 总进度
- 当前速度
- 已传输大小
- ETA
- 失败/重试状态
例如:
example.iso
62% | 320 MB/s | 38.4 GB / 62 GB
为什么 copy.workers 不足
目前:
File A ──────── Worker 1
File B ──────── Worker 2
File C ──────── Worker 3
解决的是多个文件并发。
本 Feature 希望进一步支持:
File A
├── Connection 1
├── Connection 2
├── Connection 3
└── Connection 4
解决的是单个文件并发。
这两个并发维度并不冲突。
目标
主要针对:
Public Cloud Storage
↓
OpenList
↓
Local / NAS
尤其是几十 GB 或数百 GB 的大文件。
希望 OpenList 在 Source Storage 支持 Range / 多连接的情况下,可以充分利用本地网络和 NAS 可用带宽,而不受单一传输连接限制。
The implementation does not have to be based on Aria2. Direct ranged/concurrent transfer in the Copy pipeline is also acceptable. The main goal is to support efficient multi-connection transfer for a single large file.
附加信息
No response
AI生成内容
AI模型是
ChatGPT
请确认以下事项
我已确认阅读并同意 AGPL-3.0 第15条 。
本程序不提供任何明示或暗示的担保,使用风险由您自行承担。
我已确认阅读并同意 AGPL-3.0 第16条 。
无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。
我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。
我已确认阅读了OpenList文档。
我已确认没有重复的问题或讨论。
我认为此问题必须由
OpenList处理,而非第三方。我已确认此功能尚未被实现。
我已确认此功能是合理的,且有普遍需求,并非我个人需要。
我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。
需求描述
[Feature] 跨 Storage Copy 支持单文件多连接传输
背景
OpenList挂载的公共网盘上,存在大量 .zip、.iso、.mp4等大文件,有时需要归集到NAS本地,目前通过跨storage 复制到挂载的NAS本地路径上大文件性能较低,经常得通过aria2离线下载方式“曲线救国”,通过ChatGPT分析了一下当前实现,特提功能建议,以下由ChatGPT根据我的需求描述生成:
OpenList 当前已经支持通过
tasks.copy.workers并发执行多个 Copy Task。但对于单个超大文件,增加
copy.workers并不能提高该文件本身的传输并发度。例如:
可以同时复制 5 个文件,但一个 100 GB 文件仍然主要依赖单一传输链路。
对于“公共网盘 → 本地 NAS”的场景,这可能成为单个大文件的吞吐瓶颈。
建议
希望跨 Storage Copy 支持单文件分段 / Range 多连接传输。
例如:
实现思路
建议增加类似:
其中:
workers:同时执行多少个 Copy Task / 文件;connections:单个文件使用多少个并发连接。两者应该相互独立。
Aria2 也可以作为一种实现方案
OpenList 当前已经具备 Aria2 Offline Download 能力。
因此也可以考虑在跨 Storage Copy 中,对于满足条件的文件:
利用 Aria2 的多连接下载能力完成单文件高速传输,然后再移动/导入到目标 Storage。
如果采用这种方式,希望能够:
如果直接在 OpenList 的 Copy pipeline 中实现 Range 并发,而不经过 Aria2,同样可以接受。
这里更重要的是实现单文件多连接传输能力,而不是限定具体实现方式。
使用场景
例如:
对于多个小文件:
对于单个大文件:
因此需要同时支持:
兼容性建议
并不是所有 Storage Driver 都支持 Range,因此建议根据实际能力自动选择:
Source Driver 支持 Range / Seek,并且 URL 支持 HTTP Range:
可以通过 Aria2 获取并发下载:
不支持上述能力:
不应影响现有 Storage Driver 和 Copy 行为。
进度
如果采用分段或 Aria2 下载,希望 Copy Task 能正确显示:
例如:
为什么
copy.workers不足目前:
解决的是多个文件并发。
本 Feature 希望进一步支持:
解决的是单个文件并发。
这两个并发维度并不冲突。
目标
主要针对:
尤其是几十 GB 或数百 GB 的大文件。
希望 OpenList 在 Source Storage 支持 Range / 多连接的情况下,可以充分利用本地网络和 NAS 可用带宽,而不受单一传输连接限制。
The implementation does not have to be based on Aria2. Direct ranged/concurrent transfer in the Copy pipeline is also acceptable. The main goal is to support efficient multi-connection transfer for a single large file.
附加信息
No response
AI生成内容
AI模型是
ChatGPT