Verifiable incremental backups with content-addressed storage and safe restore, powered by MoonBit.
| 能力 | 当前行为和边界 |
|---|---|
| 增量备份 | CDC、SHA-256 内容寻址、跨版本去重;不可变快照、输入预算与中断保护 |
| 严格恢复 | 全量预校验、排他发布新目录;隔离恢复演练独立读回,不覆盖已有目标 |
| 应急救援 | 只读源仓库,逐文件判断可救内容,显式接受部分恢复;损坏文件不补零、不报全量成功 |
| 健康副本重建 | 两个只读来源补齐指定快照的对象或清单,在新仓库完整校验后发布;不原地修复 |
| 恢复准备与巡检 | 独立密钥、无密钥准备清单、持久检查游标、完整周期和新鲜度;不是未来恢复保证 |
| 历史搜索 | 有预算的可重建索引,源变化拒绝旧缓存,加密源索引也加密;不用于恢复或删除决策 |
| SQLite | 在线导出、恢复后重新打开及完整性/外键/可选表列行数检查;不保证多库事务或应用业务语义 |
| S3 兼容副本 | 显式联网,仅加密源,SigV4、条件不覆盖写、读回校验、固定摘要下载;本机模拟通过,真实供应商待验证 |
| 本机工作台 | 任务、历史、选择恢复、会话解锁、进度/取消、应急救援与健康证据;仅回环 |
| 可靠任务与续作 | 私有认证日志;文件级及每1024完整分块检查点、重新读取前缀核对及发布后读回;取消/中断保留旧版本 |
| 统一应用计划 | 文件/SQLite/PostgreSQL,分项证据、容量/源异常及清理保护;默认手动,0.6 源码可显式配置调度,不隐式连接远端 |
| 分段运输归档 | 有界页/段、可选压缩、外部固定根摘要,导入完整审计后新建仓库;不改 live 仓库格式 |
| PostgreSQL | 保留逻辑导出;新增物理基准/完整 WAL 归档及 Unix 隔离 PITR 门禁,可信原生工具和源必须显式指定,不自动恢复生产库 |
| format 4 | MoonBit 流式验证、128记录/页、8MiB包、私有SQLite索引、加密、完整恢复读回;新仓库显式选择,不原地升级旧格式 |
| format 5 元数据 | 显式新库,原始ACL/ADS/xattr/时间/内部硬链接及系统报告范围归档;原生恢复独立验证,Windows冻结有效ACL并报告继承差异,不承诺全部文件系统属性 |
| 回收与回滚 | GC审计全部根后隔离无引用页/包,再等至少7日独立清理;快照退休另需双确认、宽限期及保留点实际恢复演练,默认不启用 |
| VSS 请求器 | Windows SDK 可编译的进程自有 copy-backup 生命周期;显式现有管理员会话、写入器检查/精确释放,无提权或活文件回退;真实 VSS 未验证 |
| 独立监控适配 | 可独立部署的认证/TLS接收端、私有持久回执、序号防重放/过期/回退;本机回环不等于已经部署独立主机或告警投递 |
| 日常恢复准备 | RPO/演练RTO与缺席判断;离线计划有限展示、显式脱敏心跳、白名单配置迁移,不自动移动密钥 |
| 远端只读审计 | 固定回执和成员versionId、摘要/大小及可选服务端保留读回;不是明文恢复或真实供应商验证 |
node bin/moonrestore.mjs backup-resumable REPO SOURCE
node bin/moonrestore.mjs operation-resume REPO UUID --recover
node bin/moonrestore.mjs restore-resumable REPO SNAPSHOT_ID NEW_TARGET
node bin/moonrestore.mjs plan-save PRIVATE_CONFIG_JSON
node bin/moonrestore.mjs plan-run PLAN_UUID
node bin/moonrestore.mjs archive-export REPO NEW_ARCHIVE
node bin/moonrestore.mjs archive-import ARCHIVE EXTERNAL_CHECKSUM NEW_REPOgit clone https://github.com/bzhangui/moonrestore.git
cd moonrestore
moon version --all
npm run build
npm run demonode bin/moonrestore.mjs init "E:/paper-vault"
node bin/moonrestore.mjs plan "E:/paper-vault" "D:/papers" --exclude node_modules
node bin/moonrestore.mjs backup "E:/paper-vault" "D:/papers" --label "初稿" --exclude node_modules
node bin/moonrestore.mjs list "E:/paper-vault"
node bin/moonrestore.mjs verify "E:/paper-vault" all
node bin/moonrestore.mjs restore "E:/paper-vault" SNAPSHOT_ID "D:/recovered-paper"npm run workbench
node scripts/package.mjs
# Windows x64 内置运行时与原生启动器
npm run package:desktopnode bin/moonrestore.mjs emergency-preview REPO SNAPSHOT_ID NEW_TARGET
# 复制实际 confirmation,明确接受可能的部分恢复
node bin/moonrestore.mjs emergency-restore REPO SNAPSHOT_ID NEW_TARGET --accept-partial --confirmation HASH
node bin/moonrestore.mjs recovery-checklist REPO NEW_PRIVATE_JSON
node bin/moonrestore.mjs scrub REPO --files 100 --bytes 268435456
node bin/moonrestore.mjs health-status REPO --max-age-hours 168
node bin/moonrestore.mjs index-build REPO
node bin/moonrestore.mjs index-search REPO paper
node bin/moonrestore.mjs sqlite-backup REPO DATABASE_FILE --label "应用备份"moon run examples/core --target wasm
# 独立 MoonBit 项目消费正式发布版
moon add bzhangui/moonrestore@0.12.0npm run validate
node scripts/repeat.mjs 3 120
node scripts/history-scale.mjs
node scripts/large-file.mjs
node scripts/package.mjsInstall
Download zipVerifiable incremental backups with content-addressed storage and safe restore, powered by MoonBit.