来源:[[我的笔记/NAS需求文档/同步备份/API_REFERENCE]] 提取范围:备份 API 章节及文档中的“文件备份完整流程”示例
根据 API 文档,备份功能采用“创建任务 + 事件推送 + 任务管理”的模式实现。
核心能力包括:
backup:create用于新建一个备份任务。
调用方式:ipcRenderer.invoke('backup:create', payload)
参数结构:
source: 源路径(本地)destination: 目标路径(设备)config.incremental: 是否增量备份,默认 trueconfig.exclude: 排除规则,使用 glob 模式config.schedule: 定时备份计划,使用 cron 表达式返回值:
taskId: string:新建任务 ID说明:
config.incremental 增量备份开关的补充说明API 文档原始定义为:
incremental?: boolean增量备份(默认 true)基于这段定义,可以明确确认:
incremental 是一个可选布尔字段,说明它不是固定不可改的系统行为,而是一个可配置项。true,因此在不传该字段时,系统会按增量备份处理。false。也就是说,从 API 设计上判断:
config.incremental: false如果创建任务时不传 incremental:
typescriptawait window.ipcRenderer.invoke('backup:create', {
source: '/Users/xxx/Documents',
destination: '/Data/Backup/Documents',
config: {
exclude: ['*.tmp']
}
})
按文档定义,这种情况下会走默认 true,也就是按增量备份处理。
如果希望关闭增量备份,可在创建任务时显式传:
typescriptawait window.ipcRenderer.invoke('backup:create', {
source: '/Users/xxx/Documents',
destination: '/Data/Backup/Documents',
config: {
incremental: false,
exclude: ['*.tmp']
}
})
这就是当前 API 文档中能够明确确认的“改为全量”的方式。
虽然可以确认 incremental: false 是关闭增量备份的入口,但 API 文档没有进一步解释“全量备份”在实现层面的精确定义,例如:
因此,按当前文档最稳妥的表述应当是:
incremental默认值为true,说明系统默认采用增量备份;如需改为非增量模式,可在创建任务时显式传入incremental: false。但“全量”的具体执行语义,API 文档尚未展开。
API 文档对排除规则的原始说明只有:
exclude?: string[]排除规则(glob 模式)['*.tmp', 'node_modules/**']基于这段定义,可以明确确认:
exclude 是字符串数组,因此支持多条规则同时配置。*.tmp:表示可按文件类型/文件名模式排除node_modules/**:表示可按目录及其全部内容排除也就是说,从文档可以推断,排除规则至少支持以下几类用法:
排除特定格式文件
*.tmp*.log*.zip排除某个子文件夹及其内容
node_modules/**dist/**cache/**排除某个目录下的某类文件
temp/**/*.log虽然 glob 和示例已经说明能力范围较灵活,但 API 文档没有明确写清楚下面这些细节:
因此,按当前文档最稳妥的表述应当是:
exclude支持通过 多条 glob 规则 排除文件或文件夹;可同时配置多个规则。但更细的匹配语法和界面交互方式,API 文档尚未展开。
backup:progress用于在备份过程中持续反馈执行进度。
推送字段:
taskId: 任务 IDpercent: 进度百分比(0-100)speed: 传输速度(bytes/s)transferred: 已传输字节数total: 总字节数eta: 预计剩余时间(秒)currentFile: 当前处理文件可支撑的前端能力:
backup:completed用于在任务成功结束后返回统计结果。
推送字段:
taskId: 任务 IDduration: 总耗时(秒)totalFiles: 总文件数totalSize: 总大小(字节)可支撑的前端能力:
backup:error用于在备份失败时返回错误信息。
推送字段:
taskId: 任务 IDerror: 错误描述errorCode?: 可选错误码可支撑的前端能力:
backup:list用于查看当前已有的备份任务及其状态。
返回字段:
idnamesourcedestinationstatus: idle | running | paused | completed | errorprogress.percentprogress.speedprogress.etacreatedAtlastRunAt?nextRunAt?说明:
lastRunAt / nextRunAt 说明系统支持查看最近执行时间与下次执行时间。backup:pause暂停任务。
backup:resume恢复任务。
backup:cancel取消任务。
backup:delete删除任务。
说明:
backup:list 的状态枚举里没有单独列出 cancelled 状态;因此可以确认“支持取消操作”,但取消后的最终状态表现,文档中未进一步展开。虽然不属于“备份 API”主章节,但文档中的完整流程示例表明,备份功能通常还会配合以下接口一起使用:
dialog:selectFolder用于让用户选择需要备份的本地文件夹。
zimaos:listFiles用于查看设备端路径,确定备份目标位置。
notification:show用于在备份完成后弹出系统通知。
window:openBackup用于打开备份功能界面。
text打开备份界面 -> 选择本地源文件夹 -> 选择/确认设备目标目录 -> 调用 backup:create 创建任务 -> 监听 backup:progress 更新进度 -> 成功时接收 backup:completed -> 失败时接收 backup:error -> 可选:调用 notification:show 发送完成通知
window:openBackup(可选)dialog:selectFolderzimaos:listFilesbackup:createbackup:progress(事件监听)backup:completed / backup:error(事件监听)notification:show(可选)text用户填写源目录和目标目录 -> 配置 incremental / exclude / schedule -> 调用 backup:create 创建任务 -> 后续通过 backup:list 查看 nextRunAt / lastRunAt / status -> 需要时可 pause / resume / delete
backup:create.config.schedulebackup:create.config.incrementalbackup:create.config.excludebackup:listtext任务运行中 -> 可调用 backup:pause 暂停 -> 可调用 backup:resume 恢复 -> 可调用 backup:cancel 取消 -> 不再需要时调用 backup:delete 删除任务
基于文档中给出的状态枚举和控制接口,可整理出如下状态视图:
textidle -> running -> completed -> error -> paused -> running
补充说明:
idle / running / paused / completed / error。backup:cancel,但未明确说明取消后在列表中的状态值,因此这里不额外推断取消态名称。| 功能点 | 是否明确支持 | 依据 |
|---|---|---|
| 新建备份任务 | 是 | backup:create |
| 增量备份 | 是 | config.incremental |
| 排除规则 | 是 | config.exclude |
| 定时备份 | 是 | config.schedule |
| 查看实时进度 | 是 | backup:progress |
| 查看完成统计 | 是 | backup:completed |
| 错误上报 | 是 | backup:error |
| 查看任务列表 | 是 | backup:list |
| 暂停任务 | 是 | backup:pause |
| 恢复任务 | 是 | backup:resume |
| 取消任务 | 是 | backup:cancel |
| 删除任务 | 是 | backup:delete |
| 完成后系统通知 | 是 | 示例中使用 notification:show |
这套备份 API 的设计重点是:通过 backup:create 定义备份任务,通过事件获取执行结果,通过 backup:list + pause/resume/cancel/delete 完成任务生命周期管理,并支持增量、排除和定时备份配置。
本文作者:oyph
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!