本发明涉及文件处理,特别涉及一种文件处理方法、装置、电子设备、存储介质。
背景技术:
1、随着计算机技术的发展,游戏受到大量用户的欢迎,各大游戏厂商的游戏分发构建处理技术也日益成熟。游戏版本更新时会构建安装包,用户下载安装包后完成游戏更新。安装包的文件数量非常多,并且很多的资源文件通常较小,例如un ity引擎的asset bundles文件或者虚幻引擎的pak fi les文件。服务器在管理大量小文件时会有较高的资源开销,而且分发和下载游戏时带来额外的网络开销,增加传输时间和带宽消耗,也会导致磁盘碎片化等问题。
2、为了解决小文件带来的问题,相关技术会根据设置好的阈值将多个小文件合并成一定大小的文件块,但是游戏发布新版本后会产生大量的文件变更,已有的文件块很可能超出设置好的阈值,这就需要对多个小文件进行重组合并,在小文件数量较多的情况下耗费较多的计算资源,文件处理效率较低。
技术实现思路
1、本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种文件处理方法、装置、电子设备、存储介质,能够提高文件合并的效率,提高文件处理效率。
2、第一方面,本发明实施例提供了一种文件处理方法,包括:
3、基于参考分组信息将多个第二文件分成多个第二分组,其中,所述参考分组信息用于指示多个第一文件的分组情况,所述第一文件为第一版本的目标应用的安装文件,所述第二文件为第二版本的所述目标应用的安装文件,所述第一版本为所述第二版本的上一版本;
4、从各个所述第二分组移除差异文件,基于多个所述差异文件构建至少一个第三分组,其中,所述差异文件为所述目标应用从所述第一版本更新到所述第二版本后发生变更或者新增的所述第二文件;
5、基于所述第二分组和所述第三分组各自生成文件块。
6、根据本发明的一些实施例,在所述从各个所述第二分组移除差异文件之前,所述方法还包括:
7、将所述第二文件在所述第一版本所对应的所述第一文件确定为关联文件;
8、当所述第二文件不存在所述关联文件,将所述第二文件确定为所述差异文件;
9、或者,当所述第二文件存在所述关联文件,将与所述关联文件不相同的所述第二文件确定为所述差异文件。
10、根据本发明的一些实施例,所述将与所述关联文件不相同的所述第二文件确定为所述差异文件,包括:
11、生成所述第二文件的第二元信息,获取各个所述第一文件的第一元信息;
12、基于所述关联文件的所述第一元信息和所述第二文件的所述第二元信息生成差异信息;
13、当所述差异信息用于指示文件变更,将对应的所述第二文件确定为所述差异文件。
14、根据本发明的一些实施例,所述第一元信息包括第一哈希值,所述第一哈希值基于所述第一文件的文件内容生成,在所述基于参考分组信息将多个第二文件分成多个第二分组之前,所述方法还包括:
15、基于所述第一哈希值确定复用组,其中,所述复用组包括所述第一哈希值相同的多个所述第一文件;
16、将所述复用组中任一所述第一文件确定为复用文件,在各个所述第一文件的所述第一元信息中写入内容复用范围,其中,所述内容复用范围用于指示所述第一文件的内容在所述复用文件中的记载范围;
17、基于所述复用组的全部的所述第一元信息构建分组元信息,在所述复用组内删除除了所述复用文件之外的所述第一文件;
18、基于未被归入所述复用组的多个所述第一文件构建多个第一分组,基于所述第一分组和所述复用组生成所述参考分组信息。
19、根据本发明的一些实施例,所述从各个所述第二分组移除差异文件,包括:
20、当所述第二分组对应于所述第一版本的所述复用组,保留所述复用文件;
21、在所述分组元信息中移除所述差异文件的所述第二元信息。
22、根据本发明的一些实施例,所述基于多个所述差异文件构建至少一个第三分组,包括:
23、获取预设的第一阈值;
24、基于预设规则将多个所述差异文件分为多个所述第三分组,其中,每个所述第三分组的分组大小小于或等于所述第一阈值。
25、根据本发明的一些实施例,在所述从各个所述第二分组移除差异文件之后,所述方法还包括:
26、获取预设的第二阈值,其中,所述第二阈值小于所述第一阈值;
27、将分组大小小于所述第二阈值的所述第二分组确定为待重组分组;
28、基于所述预设规则将多个所述待重组分组重组为多个第四分组,其中,所述第四分组的分组大小大于所述第二阈值,所述第四分组的分组大小小于或等于所述第一阈值;
29、基于所述第四分组生成所述文件块。
30、根据本发明的一些实施例,所述预设规则包括:
31、确定各个目标文件的第一大小值和目标路径,其中,当所述预设规则用于构建所述第三分组,所述目标文件为所述差异文件,或者,当所述预设规则用于构建所述第四分组,所述目标文件为所述待重组分组的所述第二文件;
32、基于多个所述目标路径的上下级关系构建虚拟文件树,将各个所述目标文件添加至对应的所述叶节点,其中,每个所述目标路径对应于所述虚拟文件树的一个所述叶节点;
33、基于所述第一阈值从所述叶节点中选择第一候选文件,基于所述第一候选文件构建目标分组,其中,所述目标分组的分组大小小于所述第一阈值,所述目标分组为所述第三分组或者所述第四分组。
34、根据本发明的一些实施例,所述基于所述第一阈值从所述叶节点中选择第一候选文件,基于所述第一候选文件构建目标分组,包括:
35、当所述第一候选文件的所述第一大小值小于所述第一阈值,将所述第一阈值与所述第一候选文件的所述第一大小值之差确定为第二大小值;
36、将当前的叶节点确定为第一节点,基于预设的查找步长确定第二节点和第三节点,其中,所述第二节点与所述第一节点的节点距离小于或等于所述查找步长,所述第三节点与所述第一节点的节点距离大于所述查找步长;
37、基于所述目标匹配条件在所述第一节点匹配第二候选文件,其中,所述第二候选文件为所述第一大小值小于或等于所述第二大小值的所述目标文件的最大者;
38、当未能在所述第一节点匹配到所述第二候选文件,任选一个所述第二节点匹配所述第二候选文件;
39、当未能在任一所述第二节点匹配到所述第二候选文件,任选一个所述第三节点匹配所述第二候选文件;
40、当未能在任一所述第三节点匹配到所述第二候选文件,基于所述第一候选文件构建所述目标分组;
41、当成功匹配到所述第二候选文件,基于所述第二候选文件的所述第一大小值减少所述第二大小值,基于更新后的所述第二大小值继续匹配下一个所述第二候选文件,直到更新后的所述第二大小值无法匹配出任一所述目标文件,基于所述第一候选文件和全部的所述第二候选文件构建所述目标分组。
42、根据本发明的一些实施例,当所述预设规则用于构建所述第四分组,所述基于所述第一阈值从所述叶节点中选择第一候选文件,包括:
43、当匹配出至少两个所述第二候选文件,确定各个所述第二候选文件的目标计数值,其中,所述目标计数值用于指示所述第二候选文件累计未发生变更的版本数;
44、采用所述目标计数值最大的所述第二候选文件。
45、第二方面,本发明实施例提供了一种文件处理装置,包括:
46、分组模块,被配置为基于参考分组信息将多个第二文件分成多个第二分组,其中,所述参考分组信息用于指示多个第一文件的分组情况,所述第一文件为第一版本的目标应用的安装文件,所述第二文件为第二版本的所述目标应用的安装文件,所述第一版本为所述第二版本的上一版本;
47、重组模块,被配置为从各个所述第二分组移除差异文件,基于多个所述差异文件构建至少一个第三分组,其中,所述差异文件为所述目标应用从所述第一版本更新到所述第二版本后发生变更或者新增的所述第二文件;
48、第一合包模块,被配置为基于所述第二分组和所述第三分组各自生成文件块。
49、第三方面,本发明实施例提供了一种电子设备,包括少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如上述第一方面所述的文件处理方法。
50、第四方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如上述第一方面所述的文件处理方法。
51、根据本发明实施例的方法,基于参考分组信息将多个第二文件分成多个第二分组,将版本更新时发生变更的第二文件确定为差异文件,将差异文件从各个第二分组中移除,基于差异文件重组成第三分组,基于第二分组和第三分组各自完成文件块的构建。如此,能够在获取到新版本的安装包后继承上一版本的分组方式,只需要对差异文件进行重组操作,减少了文件重组的所涉及的文件数量,降低服务器的开销,提高文件处理效率。