目录
目录README.md

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


本项目是第一届中国研究生操作系统开源创新大赛——“松山湖杯”,系统创新赛道的“龙马精神队”的参赛作品,是一个基于OpenHarmony的、旨在帮助应用数据进行高性能差分备份及同步的系统服务层子系统:LMJS_backup_system。功能模块包含全量备份、差分备份、备份恢复同步;功能测试部分包括原始数据生成、修改与日志文件生成、恢复数据正确性校验三个模块。

子系统模块示意图如下图所示。 images_1_png


环境和依赖

  • 搭载OpenHarmony3.2的RK3568开发板
  • hdc开发调试工具
  • DevEco Device Tool 4.0 Release
  • Ubuntu20.4.6虚拟机

安装和运行

  1. 在Linux虚拟机和Windows主机上分别安装DevEco Device Tool
  2. Linux虚拟机与主机通过ssh连接,通过DevEco Device Tool加载项目源码
  3. 利用DevEco Device Tool编译源码,再烧录到RK3568开发板上
  4. 在主机上安装好hdc工具后,打开cmd命令行窗口,输入”hdc shell”启动调试
  5. 运行如下命令:
    1. cd data: 进入项目运行目录
    2. generate_sourceA 1 5 G:生成一个包含1级目录,下有一个5G大文件的原始数据。命令后三个参数依次为目录级数N(第一级目录下有N个二级目录,每个二级目录下又有N个三级目录……以此类推,最后一级为文件)、数据总大小、单位(GB、MB、KB)。运行完成后,该命令会在运行目录下创建源数据目录LMJS\sourceA根目录,并将刚生成的原始数据LMJS\sourceA\dir1在存放在该目录下 images_2_png
    3. full_backup:对LMJS/sourceA下的原始数据进行全量备份。模拟初次备份的情形,将源目录下的文件数据全部复制到备份目录LMJS/backupB1下。当存在较多小文件(小于4KB)时,该命令会将小文件合并成.merge后缀的较大文件,以节省存储空间,同时生成全局合并索引文件LMJS/backupB1/merge_file.txt,用于存储发生小文件合并的路径,以及局部合并索引文件merge_info.txt,用于后续对合并文件进行拆分
      merge_file.txt文件格式示例: images_3_png
      merge_info.txt文件格式示例: images_4_png
    4. sync_file a1:将LMJS/backupB1下的备份数据同步恢复到同步文件夹LMJS/syncS1下,如果存在合并文件,该命令会读取merge_file.txtmerge_info.txt文件,将对应的合并文件拆分成原始的小文件
    5. file_comparison dir1 dir2:数据一致性校验工具,可以对比dir1dir2两个目录下的数据是否一致
    6. modify_sourceA_and_generate_log:通过模拟截获应用对数据文件进行新增、删除和修改操作的API,该命令在对LMJS/sourceA下的数据进行修改的同时,会将操作对应的日志信息记录到日志文件LMJS/mylog.log中,每一条日志信息包含执行的日期时间,执行的操作,操作的目标路径以及操作是否正常结束([1]end表示正常结束,[-1]error则表示操作意外中断) images_5_png
    7. diff_backup a2:执行该命令后,会先创建差分备份目录LMJS/backupB2,然后逐条读取日志文件LMJS/mylog.log,将其中记录的文件操作进行合并到索引文件LMJS/backupB2/index.txt中,以保证差分操作的事务性。然后进行差分备份:对于新增的文件和目录,系统会将其全量备份;对于被修改过的文件,系统会通过rsync算法计算其差分内容并保存为.delta后缀的文件;对于被删除的文件或目录,则不会进行任何操作,而是等到恢复时再删除
    8. sync_file a2:将LMJS/backupB2中的差分备份数据同步到同步文件夹LMJS/syncS2中。命令会首先读取LMJS/backupB2/index.txt中记录的内容,对于被记录为新增的文件或目录,系统会进行全量同步;对于被记录为删除的文件或目录,系统会将其删除;对于被记录为修改过的文件或目录,系统会将LMJS/syncS1中对应的老文件与LMJS/backupB2中对应的.delta后缀文件合并,恢复出修改后的文件
    9. 参照上述操作,可以继续通过modify_sourceA_and_generate_log命令修改LMJS/sourceA下的数据,再通过diff_backup a3命令进行第二次差分备份,通过sync_file a3同步数据

      项目结构

      Openharmony v3.2 Release    
      └── LMJS_backup_system   // 高性能应用目录差异分析服务子系统
        ├── generate_sourceA     // 原始数据生成
        ├── modify_sourceA_and_generate_log // 修改源数据并生成日志文件
        ├── full_backup // 全量备份
        ├── diff_backup // 差分备份
        ├── sync_file  // 备份数据同步
        └── file_comparison // 数据一致性校验工具
关于
219.8 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号