目录
目录README.md

✨高性能应用目录差异分析服务


本项目是第一届中国研究生操作系统开源创新大赛——“松山湖杯”,系统创新赛道的“龙马精神队”的参赛作品。 本项目是一个运行在鸿蒙系统上的应用程序,实现了以下功能:

  1. 对给定的三个不同时刻的应用数据A1,A2和A3分别进行全量备份和差分备份;
  2. 在进行差分备份的同时保存用户对数据的修改信息;
  3. 依据全量备份和差分备份对应用数据进行了完整恢复。

环境和依赖

  • DevEco Studio v3.1 Release
  • OpenHarmony 3.0及以上的phone或tablet模拟机(推荐),或RK3568开发板(尚不稳定)
  • SDK 9+

数据准备

运行本项目需要按照固定的目录结构准备数据:

├── data     
    ├── sourceA1 
    |   ├── abc //T1时刻数据A1
    ├── sourceA2
    |   ├── abc //T2时刻数据A2
    └── sourceA3
        └── abc //T3时刻数据A3
  1. 新建文件夹data, 再在data下新建文件夹sourceA1,sourceA2和sourceA3, 将T1,T2,T3三个时刻对应的数据的根目录重命名为abc,分别存放在对应source文件夹下。
  2. 将data文件夹打包成压缩文件data.zip,存放在项目src/main/resources/rawfile目录下供程序运行时读取

安装和运行

  1. 使用DevEco studio打开项目,下载并安装phone模拟机
  2. 打开Device Manager,启动模拟机: img_1.png
  3. 待模拟机与DevEco Studio连接成功后,点击右上角运行按钮▶️,待程序编译安装完成后,模拟机会自动启动进入hap,界面如下: img_3.png
  4. 按照如下顺序依次点击按钮(基于一组简单的数据进行演示):
    1. 点击“待备份文件列表”:应用会扫描并在文本框中输出T1时刻sourceA1目录下的所有待备份路径; img_4.png
    2. 点击“全量备份A1”:应用会对A1所有文件进行全量备份,得到备份数据B1,并在文本框中输出完成备份的路径; img_5.png
    3. 点击“差分备份A2->A1”:应用会基于mtime和rsync算法比对全量备份数据B1和T2时刻数据A2,得到差分备份数据B2,分析并保存差异信息。文本框会输出两部分信息:
      1)文件差异分析信息:T2时刻的应用数据A2相对于B1发生了内容修改的文件路径,新增的文件路径以及被删除的文件路径;
      2)status.txt索引文件的内容,记录了文件中具体发生修改的字节位置,以及新增和删除的目录及文件 img_6.png
    4. 点击“恢复备份A2”:应用会利用保存的差异分析信息合并全量备份B1和差分备份B2,得到A2的恢复数据R2。 此外,为验证恢复效果,应用会通过计算校验码的方式来验证恢复文件内容的完整性。文本框输出恢复成功的路径,未成功恢复的路径,完整恢复的文件以及未能完整恢复的文件。 img_7.png
    5. 类似的,点击后续按钮,应用会分析A2和A3的差异并存储为差分备份B3,在恢复时会将B1,B2,B3进行叠加得到A3的恢复数据R3,同时验证恢复数据是否完整

项目结构

├── MyBackupApp2    
    ├── AppScope
    ├── entry   //应用主入口
         └── src 
             ├── main 
             |   ├── ets
             |   |   ├── entriability
             |   |   |   ├── EntryAbility //应用生命周期控制
             |   |   └── pages  //应用页面
             |   |       ├── utils
             |   |       |   ├── BackupAll.ts //全量备份相关代码
             |   |       |   ├── DifferentialBackup.ts //差分备份相关代码
             |   |       |   ├── Evaluate.ts //恢复效果检验
             |   |       |   ├── PrepareFiles.ts //创建备份,恢复所需目录
             |   |       |   ├── RestoreBackup.ts //备份恢复相关代码
             |   |       |   └── ViewFiles.ts //数据可视化
             |   |       └── index.ets //主页面
             |   ├── resources
             |   |   └── rawfile
             |   |       └── data.zip //应用数据
             |   ├── rsync //rsync算法相关代码
             |   └── module.json5
             └── ohosTest   
关于
55.7 MB
邀请码