modify ppt
本项目是第一届中国研究生操作系统开源创新大赛——“松山湖杯”,系统创新赛道的“龙马精神队”的参赛作品,是一个基于OpenHarmony的、旨在帮助应用数据进行高性能差分备份及同步的系统服务层子系统:LMJS_backup_system。功能模块包含全量备份、差分备份、备份恢复同步;功能测试部分包括原始数据生成、修改与日志文件生成、恢复数据正确性校验三个模块。
子系统模块示意图如下图所示。
cd data
generate_sourceA 1 5 G
LMJS\sourceA
LMJS\sourceA\dir1
full_backup
LMJS/sourceA
LMJS/backupB1
.merge
LMJS/backupB1/merge_file.txt
merge_info.txt
merge_file.txt
sync_file a1
LMJS/syncS1
file_comparison dir1 dir2
dir1
dir2
modify_sourceA_and_generate_log
LMJS/mylog.log
[1]end
[-1]error
diff_backup a2
LMJS/backupB2
LMJS/backupB2/index.txt
.delta
sync_file a2
LMJS/syncS2
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 // 数据一致性校验工具
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
✨高性能应用目录差异分析服务
本项目是第一届中国研究生操作系统开源创新大赛——“松山湖杯”,系统创新赛道的“龙马精神队”的参赛作品,是一个基于OpenHarmony的、旨在帮助应用数据进行高性能差分备份及同步的系统服务层子系统:LMJS_backup_system。功能模块包含全量备份、差分备份、备份恢复同步;功能测试部分包括原始数据生成、修改与日志文件生成、恢复数据正确性校验三个模块。
子系统模块示意图如下图所示。
环境和依赖
安装和运行
cd data: 进入项目运行目录generate_sourceA 1 5 G:生成一个包含1级目录,下有一个5G大文件的原始数据。命令后三个参数依次为目录级数N(第一级目录下有N个二级目录,每个二级目录下又有N个三级目录……以此类推,最后一级为文件)、数据总大小、单位(GB、MB、KB)。运行完成后,该命令会在运行目录下创建源数据目录LMJS\sourceA根目录,并将刚生成的原始数据LMJS\sourceA\dir1在存放在该目录下full_backup:对LMJS/sourceA下的原始数据进行全量备份。模拟初次备份的情形,将源目录下的文件数据全部复制到备份目录LMJS/backupB1下。当存在较多小文件(小于4KB)时,该命令会将小文件合并成.merge后缀的较大文件,以节省存储空间,同时生成全局合并索引文件LMJS/backupB1/merge_file.txt,用于存储发生小文件合并的路径,以及局部合并索引文件merge_info.txt,用于后续对合并文件进行拆分merge_file.txt文件格式示例:merge_info.txt文件格式示例:sync_file a1:将LMJS/backupB1下的备份数据同步恢复到同步文件夹LMJS/syncS1下,如果存在合并文件,该命令会读取merge_file.txt和merge_info.txt文件,将对应的合并文件拆分成原始的小文件file_comparison dir1 dir2:数据一致性校验工具,可以对比dir1和dir2两个目录下的数据是否一致modify_sourceA_and_generate_log:通过模拟截获应用对数据文件进行新增、删除和修改操作的API,该命令在对LMJS/sourceA下的数据进行修改的同时,会将操作对应的日志信息记录到日志文件LMJS/mylog.log中,每一条日志信息包含执行的日期时间,执行的操作,操作的目标路径以及操作是否正常结束([1]end表示正常结束,[-1]error则表示操作意外中断)diff_backup a2:执行该命令后,会先创建差分备份目录LMJS/backupB2,然后逐条读取日志文件LMJS/mylog.log,将其中记录的文件操作进行合并到索引文件LMJS/backupB2/index.txt中,以保证差分操作的事务性。然后进行差分备份:对于新增的文件和目录,系统会将其全量备份;对于被修改过的文件,系统会通过rsync算法计算其差分内容并保存为.delta后缀的文件;对于被删除的文件或目录,则不会进行任何操作,而是等到恢复时再删除sync_file a2:将LMJS/backupB2中的差分备份数据同步到同步文件夹LMJS/syncS2中。命令会首先读取LMJS/backupB2/index.txt中记录的内容,对于被记录为新增的文件或目录,系统会进行全量同步;对于被记录为删除的文件或目录,系统会将其删除;对于被记录为修改过的文件或目录,系统会将LMJS/syncS1中对应的老文件与LMJS/backupB2中对应的.delta后缀文件合并,恢复出修改后的文件modify_sourceA_and_generate_log命令修改LMJS/sourceA下的数据,再通过diff_backup a3命令进行第二次差分备份,通过sync_file a3同步数据项目结构