前言数据备份与恢复是移动应用不可或缺的基础能力它保障用户数据在换机迁移、应用重装、系统恢复等场景下的安全性和连续性。在萌宠日记中我们通过ExtensionAbility的backup 类型集成了 HarmonyOS 的原生备份恢复能力让用户的宠物日记、健康记录、照片数据得到可靠保护。本文将从萌宠日记的备份恢复实现出发深入解析 ExtensionAbility 的配置、备份扩展的实现原理以及备份配置文件的设计细节。一、备份恢复体系概述1.1 备份能力架构HarmonyOS 的备份恢复体系包含三个核心角色角色组件职责系统备份服务系统级服务调度备份任务、管理备份数据备份扩展ExtensionAbilitybackup 类型提供应用的备份/恢复逻辑备份配置backup_config.json声明需要备份的文件和目录备份恢复的完整流程用户触发备份 → 系统备份服务 → 调度各应用备份扩展 ↓ 应用备份扩展 → 读取 backup_config.json → 收集指定文件 ↓ 文件打包加密 → 存储到系统备份目录1.2 萌宠日记的备份配置// module.json5 — 备份扩展声明 { extensionAbilities: [ { name: EntryBackupAbility, srcEntry: ./ets/entrybackupability/EntryBackupAbility.ets, type: backup, exported: false, metadata: [ { name: ohos.extension.backup, resource: $profile:backup_config } ] } ] }提示exported: false表示该扩展能力仅对系统服务可见外部应用无法直接调用这符合备份扩展的安全要求。二、备份扩展的实现2.1 EntryBackupAbility 源码// EntryBackupAbility.ets — 备份扩展实现 import { BackupExtensionAbility } from kit.CoreFileKit; export default class EntryBackupAbility extends BackupExtensionAbility { // 备份前的准备工作 onBackup(): void { console.log(EntryBackupAbility onBackup); } // 恢复后的处理工作 onRestore(): void { console.log(EntryBackupAbility onRestore); } }2.2 BackupExtensionAbility 生命周期BackupExtensionAbility继承自ExtensionAbility提供了两个关键的回调方法方法触发时机典型用途onBackup()系统开始备份该应用时数据一致性检查、关闭正在写入的文件onRestore()系统完成数据恢复后重建缓存、刷新 UI、重新建立网络连接2.3 备份扩展的工作流程有序列表 — 备份/恢复的完整生命周期系统触发备份用户手动备份或系统自动备份onBackup 调用应用准备备份数据确保文件一致性系统读取配置系统根据backup_config.json收集文件文件打包加密系统将文件打包并加密存储恢复触发用户在新设备或重装后恢复数据系统还原文件系统将备份文件还原到应用沙箱onRestore 调用应用处理恢复后的数据刷新 UI三、备份配置文件详解3.1 backup_config.json 结构{ allowToBackupPersistent: true, includeFiles: [ data/storage/el2/database/, data/storage/el2/base/preferences/, data/storage/el2/base/files/ ], excludeFiles: [ data/storage/el2/base/cache/ ] }3.2 配置字段说明字段类型说明萌宠日记配置allowToBackupPersistentboolean是否允许持久化备份trueincludeFilesstring[]需要备份的文件/目录路径列表数据库、首选项、文件excludeFilesstring[]排除的路径列表排除 includeFiles 中的子路径缓存目录3.3 路径配置规范备份路径使用沙箱路径遵循以下规则路径模式说明存储内容data/storage/el2/database/关系型数据库目录日记数据、宠物档案data/storage/el2/base/preferences/首选项数据目录用户设置、主题偏好data/storage/el2/base/files/应用文件目录用户创建的文件data/storage/el2/base/cache/缓存目录排除临时文件、图片缓存四、数据存储路径说明4.1 EL 等级说明HarmonyOS 沙箱路径中的el表示加密级别Encryption Level加密级别路径说明备份场景el1设备级加密设备解锁前可访问不常用el2用户级加密用户解锁后可访问萌宠日记使用el3增强加密需要用户身份验证金融级数据el4最高加密最高安全等级敏感数据4.2 萌宠日记的数据存储路径萌宠日记的数据存储在el2目录下包含以下数据数据类型存储路径备份策略关系型数据库el2/database/✅ 备份用户首选项el2/base/preferences/✅ 备份用户文件el2/base/files/✅ 备份图片缓存el2/base/cache/❌ 排除五、备份策略设计5.1 备份触发时机触发方式说明用户是否感知手动备份用户在设置中点击“备份“有感知自动备份系统在充电WiFi 环境下自动备份无感知换机迁移新设备恢复时触发有感知应用重装重装应用时恢复数据有感知5.2 备份数据的大小限制限制项限制值说明单应用备份大小无硬性限制受存储空间约束备份文件数量建议不超过 1000 个过多文件影响备份效率单文件大小建议不超过 100MB大型文件如视频需单独处理六、备份扩展的完整生命周期6.1 扩展生命周期import { BackupExtensionAbility } from kit.CoreFileKit; import { hilog } from kit.PerformanceAnalysisKit; const DOMAIN 0x0000; export default class EntryBackupAbility extends BackupExtensionAbility { // 创建时的初始化 onCreate(): void { hilog.info(DOMAIN, testTag, BackupAbility onCreate); } // 备份前准备 onBackup(): void { hilog.info(DOMAIN, testTag, BackupAbility onBackup); // 关闭所有数据库连接确保数据一致性 // 刷新 Preferences 缓存到磁盘 } // 恢复后处理 onRestore(): void { hilog.info(DOMAIN, testTag, BackupAbility onRestore); // 重建数据库连接 // 重新加载用户首选项 // 通知 UI 刷新数据 } // 销毁时的清理 onDestroy(): void { hilog.info(DOMAIN, testTag, BackupAbility onDestroy); } }6.2 生命周期与 UIAbility 的协同操作UIAbility 生命周期BackupExtensionAbility 生命周期备份开始onBackgroundonBackup备份进行中后台运行文件收集备份完成onForeground—恢复完成onForegroundonRestore七、备份数据的安全性7.1 加密机制HarmonyOS 的备份数据采用端到端加密安全层级保护措施说明传输层TLS 加密备份数据传输加密存储层AES-256 加密备份数据存储加密密钥管理硬件安全模块密钥存储在 TEE 环境中7.2 数据隔离每个应用的备份数据独立存储互不可见备份数据与运行时数据隔离存储加密密钥与应用签名绑定防止数据被其他应用解密八、备份恢复的测试方法8.1 模拟备份恢复# 使用 hdc 命令模拟备份恢复 hdc shell bm backup --bundle-name com.mengchongriji.app --backup-dir /data/backup # 触发恢复 hdc shell bm restore --bundle-name com.mengchongriji.app --backup-dir /data/backup8.2 验证备份数据# 查看备份目录 hdc shell ls -la /data/backup/com.mengchongriji.app/ # 检查备份文件完整性 hdc shell bm dump --backup --bundle-name com.mengchongriji.app九、常见问题与调试9.1 备份失败排查错误现象可能原因解决方案备份文件为空includeFiles 路径配置错误检查路径是否与实际沙箱路径一致备份恢复后数据丢失excludeFiles 排除了关键数据检查 excludeFiles 配置备份超时数据量过大考虑排除 cache 目录恢复后应用崩溃数据版本不兼容在 onRestore 中做数据迁移9.2 调试技巧// 添加详细的日志便于定位备份恢复问题 onBackup(): void { hilog.info(DOMAIN, testTag, Backup started at: %{public}s, Date.now().toString()) // 检查文件状态 // ... } onRestore(): void { hilog.info(DOMAIN, testTag, Restore completed at: %{public}s, Date.now().toString()) // 验证数据完整性 // ... }十、备份恢复最佳实践10.1 设计原则最小化备份数据只备份用户数据不备份缓存和临时文件数据一致性备份前确保数据写入完成版本兼容恢复时考虑数据格式的版本兼容性用户控制提供手动备份入口让用户掌握备份时机10.2 萌宠日记的备份策略数据类型备份策略理由日记数据全部备份用户核心数据不可丢失宠物档案全部备份用户核心数据健康记录全部备份用户核心数据提醒事项全部备份用户核心数据用户偏好全部备份恢复体验一致图片缓存不备份可重新加载节省空间临时文件不备份无保留价值总结本文从萌宠日记的备份恢复实现出发完整解析了 HarmonyOSExtensionAbilitybackup 类型的配置与开发备份恢复架构系统备份服务 备份扩展 备份配置的三层模型备份扩展实现BackupExtensionAbility 的 onBackup 和 onRestore 方法备份配置文件backup_config.json 的字段详解与路径规范数据存储路径EL 加密级别、沙箱路径说明安全性保障端到端加密、数据隔离测试与调试hdc 命令模拟备份恢复、问题排查下一篇我们将深入应用图标与启动窗口优化解析启动图标和启动窗口的配置技巧。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源应用文件备份恢复https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-file-backup-overview备份扩展开发指导https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/backup-extensionExtensionAbility 概述https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/extensionability-overview应用沙箱路径https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-sandbox数据加密级别https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/data-encryption应用数据备份恢复https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-data-migration-overview备份恢复 FAQhttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-file-backup-restore关系型数据库备份https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-data-persistence