fluxdown 中文文档 下载 App

SQLite 持久化:每个字节范围都被记住

为什么 SQLite 是下载管理器的好搭档

下载任务天然是「有状态的」:每个分段下载到哪个偏移量、哪些已经校验过、队列还有多少等待——这些状态如果只放内存,断电或崩溃就全丢了。FluxDown 选择把所有运行状态持久化到一个本地 SQLite 数据库,而不是把内存快照定时 dump 出去。

存了什么

SQLite 数据库文件位置:

数据库里存的主要表:

表存了什么
tasks任务元信息:URL、类型、状态(下载中/暂停/完成/失败)、起始时间、总大小
segments每个任务当前的分段与字节范围——这个表是断点续传的真相源
queues命名队列及其顺序、每日起止时间、并发数
settings所有偏好(主题、限速、BT/eD2K 参数等),键值形式
rss_feeds / rss_itemsRSS 订阅与已过滤过的条目
plugins已安装插件与权限声明
webhooksWebhook 端点与过滤规则

每次写入的粒度

分段表是关键——引擎每下载完一个分段(不一定是完整文件的大段,因为 Work Stealing 会继续劈),就原子更新该分段的已下载偏移。即使此刻断电,重启后引擎从数据库里读出最后一次提交的偏移,只需要重新拉取「最后一个未完成分段」的尾部。

这个设计比传统的「每下载 N 字节刷一次 checkpoint」更安全,因为写入总是在分段边界上,不会出现半写入状态。

与其他下载器的对比

下载器持久化方式断电恢复
FluxDown实时写 SQLite 分段表只重拉最后一个未完成分段
IDM.idx 分段文件 + 整体 checkpoint可能丢整个最后一个分段
aria2.aria2 控制文件(每 30 秒 flush)丢 checkpoint 周期内的进度

备份与迁移

SQLite 数据库本身就是一个单文件。备份就是直接复制 fluxdown.db 到别的位置;迁移到新机器就是把这个文件放到新机器的应用数据目录里。

注意:只有桌面端的任务、队列、设置在这个文件里。云同步(可选登录后)会把设置(外观/下载偏好/BT/eD2K 参数)单独同步到账号,但下载本身永远只在本地,不走云端。