一种大文件差异对比方法、装置、计算机设备及存储介质转让专利

申请号 : CN202111496201.1

文献号 : CN113886332B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李伟豪韩帆

申请人 : 广东睿江云计算股份有限公司

摘要 :

本申请属于数据处理领域,应用于网盘同步数据,多人协同文档、云数据存储等领域中,涉及一种大文件差异对比方法、装置、计算机设备及存储介质,所述方法包括获取文件,提取所述文件的特征数据;将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段;根据所述多个字段的值,进行不同文件差异对比;及判定文件差异对比结果。此外,本申请还涉及区块链技术,用户的大文件差异数据可存储于区块链中。采用排列的矩阵块点值进行差异对比,用排列的矩阵块的哈希值做二次差异对比,从个别到局部地扩大范围,减少误判率,提高判定差异一致性;减少内存资源,差异对比效率高,可节省时间和空间。

权利要求 :

1.一种大文件差异对比方法,其特征在于,包括下述步骤:获取文件,提取所述文件的特征数据;

将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段;

根据所述多个字段的值,进行不同文件差异对比;所述根据所述多个字段的值,进行不同文件差异对比的步骤包括:

将所述多个字段分为奇偶值、矩阵分布比、稀疏矩阵列、差异矩阵列、差异哈希数组、文件名、文件路径和修改时间戳;

根据矩阵分布比,把所述文件的二进制数据划分成多个矩阵块,存储所述多个矩阵块的索引值;

存储稀疏矩阵列的二维数组索引值,和差异矩阵列的二维数组的数值;

将每块稀疏矩阵列的二维数组索引值,与所述多个矩阵块的位置进行一一对应,选取差异矩阵列的数组值;

假设稀疏矩阵列的二维数组里第N个行下标,是一维数组索引值A,差异矩阵列的二维数组里第N个行下标,是一维数组差异值B,与第N个二进制矩阵块C匹配,A是索引值数组,B是差异值数组,C是二进制矩阵,A的每个值映射到C的矩阵值位置,即选取差异矩阵列的数组值D,判定差异值数组B与选取差异矩阵列的数组值D的一致性,如果数值不一致,则说明两个文件有差异,判定不一致的结果;如果数值一致,则依次判断所有块稀疏阵列是否相同;

如果所有块稀疏阵列值相同,则启用二次差异对比;

所述二次差异对比的步骤包括:将字段差异哈希数组,存放到内存;

对文件二进制矩阵的对应阵块,用SHA1的哈希算法来计算哈希值,然后与记录的哈希值也就是字段差异哈希数组中的哈希值一一对应,比较两值一致性;

如果其中有哈希值不一致的情况,则表明文件有差异,判定不一致的结果,如果所有的哈希值数据一致,则表明文件相同;及判定文件差异对比结果;所述获取文件,提取所述文件的特征数据的步骤包括:

获取所述文件;

计算所述文件的大小,根据所述文件的大小,计算出矩阵比,划分文件二进制矩阵阵块的比例;

根据所述文件二进制矩阵阵块的比例,计算奇偶值;

根据所述奇偶值,提取所述文件二进制矩阵块值和哈希值。

2.根据权利要求1所述的大文件差异对比方法,其特征在于,所述将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段的步骤具体包括:将所述特征数据生成数据结构;

判断数据库的数据结构表是否存在,如果不存在,则创建数据结构表;

将所述数据结构保存到所述数据结构表里。

3.根据权利要求1所述的大文件差异对比方法,其特征在于,所述提取所述文件二进制矩阵块值和哈希值的步骤具体包括:计算以奇排列的稀疏矩阵阵块,把稀疏矩阵为1的值作为位置索引,把二进制矩阵块的对应位置值保存为数组,得出稀疏矩阵列二维数组和差异矩阵列二维数组;

计算以偶排列的二进制矩阵阵块,把每个二进制矩阵阵块的所有值,用SHA1的哈希算法来计算值,最后保存为一维数组;或者计算以偶排列的稀疏矩阵阵块,把稀疏矩阵为1的值作为位置索引,把二进制矩阵块的对应位置值保存为数组,得出稀疏矩阵列二维数组和差异矩阵列二维数组;

计算以奇排列的二进制矩阵阵块,把每个二进制矩阵阵块的所有值,用SHA1的哈希算法来计算值,最后保存为一维数组。

4.一种大文件差异对比装置,其特征在于,包括:获取模块,用于获取文件,提取所述文件的特征数据;

数据结构生成模块,用于将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段;

差异对比模块,用于根据所述多个字段的值,进行不同文件差异对比;所述根据所述多个字段的值,进行不同文件差异对比的步骤包括:将所述多个字段分为奇偶值、矩阵分布比、稀疏矩阵列、差异矩阵列、差异哈希数组、文件名、文件路径和修改时间戳;

根据矩阵分布比,把所述文件的二进制数据划分成多个矩阵块,存储所述多个矩阵块的索引值;

存储稀疏矩阵列的二维数组索引值,和差异矩阵列的二维数组的数值;

将每块稀疏矩阵列的二维数组索引值,与所述多个矩阵块的位置进行一一对应,选取差异矩阵列的数组值;

假设稀疏矩阵列的二维数组里第N个行下标,是一维数组索引值A,差异矩阵列的二维数组里第N个行下标,是一维数组差异值B,与第N个二进制矩阵块C匹配,A是索引值数组,B是差异值数组,C是二进制矩阵,A的每个值映射到C的矩阵值位置,即选取差异矩阵列的数组值D,判定差异值数组B与选取差异矩阵列的数组值D的一致性,如果数值不一致,则说明两个文件有差异,判定不一致的结果;如果数值一致,则依次判断所有块稀疏阵列是否相同;

如果所有块稀疏阵列值相同,则启用二次差异对比;

所述二次差异对比的步骤包括:将字段差异哈希数组,存放到内存;

对文件二进制矩阵的对应阵块,用SHA1的哈希算法来计算哈希值,然后与记录的哈希值也就是字段差异哈希数组中的哈希值一一对应,比较两值一致性;

如果其中有哈希值不一致的情况,则表明文件有差异,判定不一致的结果,如果所有的哈希值数据一致,则表明文件相同;及判定模块,用于判定不同文件差异对比结果;

所述获取模块包括:

文件提取模块,用于获取所述文件;

特征数据获取模块,用于计算所述文件的大小,根据所述文件的大小计算出矩阵比,划分文件二进制矩阵阵块的比例,根据文件二进制矩阵阵块的比例,计算奇偶值,提取所述文件的二进制矩阵块值和哈希值。

5.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至3中任一项所述的大文件差异对比方法的步骤。

6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至3中任一项所述的大文件差异对比方法的步骤。

说明书 :

一种大文件差异对比方法、装置、计算机设备及存储介质

技术领域

[0001] 本申请涉及数据处理技术领域,尤其涉及一种大文件差异对比方法、装置、计算机设备及存储介质。

背景技术

[0002] 文件差异对比方式,应用到很多场合下。例如网盘同步数据、多人协同文档等。但是文件越大,彼此之间进行差异对比,所花费的时间越长。
[0003] 现有技术中,比较常用的对比方式,是用MD5方式对文件生成消息摘要的校验码,与原文件的MD5校验码进行对比,来判定其一致性。在小文件上,其操作性相对简单;但是在
大文件上,会存在以下两点不足:
[0004] 其一,消耗CPU和占用内存就相对很大,首先要把文件加载到内存上,然后再MD5生成校验码,导致速度变得很慢了,如果内存严重不足,会导致生成程序操作失败的可能性;
[0005] 其二,需要自己记录或保存原文件的校验码,才可以有对现有文件做差异比较的必要条件,不容易管理。

发明内容

[0006] 本申请的目的在于提出一种大文件差异对比方法、装置、计算机设备及存储介质,以解决现有技术中对大文件进行差异比较时,比较速度缓慢,如果内存严重不足,会导致生
成程序操作失败的可能性;需要自己记录或保存原文件的校验码,不容易进行大文件差异
管理的问题。
[0007] 为了解决上述技术问题,本申请提供一种大文件差异对比方法,采用了如下所述的技术方案:
[0008] 包括下述步骤:
[0009] 获取文件,提取所述文件的特征数据;
[0010] 将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段;
[0011] 根据所述多个字段的值,进行不同文件差异对比;及判定不同文件差异对比结果。
[0012] 进一步的,所述获取文件,提取所述文件的特征数据的步骤还包括:
[0013] 获取所述文件;
[0014] 计算所述文件的大小,根据所述文件的大小计算出矩阵比,划分文件二进制矩阵阵块的比例;
[0015] 根据文件二进制矩阵阵块的比例,计算奇偶值;
[0016] 提取所述文件的二进制矩阵块值和哈希值。
[0017] 进一步的,所述将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段的步骤具体包括:将所述特征数据生成数据结构;
[0018] 判断数据库的数据结构表是否存在,如果不存在,则创建数据结构表,将所述数据结构保存到数据结构表里。
[0019] 进一步的,所述提取所述文件的二进制矩阵块值和哈希值的步骤具体包括:
[0020] 计算以奇排列的稀疏矩阵阵块,把稀疏矩阵为1的值作为位置索引,把二进制矩阵块的对应位置值保存为数组,得出稀疏矩阵列二维数组和差异矩阵列二维数组;
[0021] 计算以偶排列的二进制矩阵块,把每个阵块的所有值,用SHA1的哈希算法来计算值,最后保存为一维数组;或者计算以偶排列的稀疏矩阵阵块,把稀疏矩阵为1的值作为位
置索引,把二进制矩阵块的对应位置值保存为数组,得出稀疏矩阵列二维数组和差异矩阵
列二维数组;
[0022] 计算以奇排列的二进制矩阵块,把每个阵块的所有值,用SHA1的哈希算法来计算值,最后保存为一维数组。
[0023] 进一步的,所述根据所述多个字段的值,进行差异对比的步骤包括:
[0024] 将所述多个字段分为奇偶值、矩阵分布比、稀疏矩阵列、差异矩阵列、差异哈希数组、文件名、文件路径和修改时间戳;
[0025] 根据矩阵分布比,把所述文件的二进制数据划分成多个矩阵块,存储所述多个矩阵块的索引值;
[0026] 存储稀疏矩阵列的二维数组索引值,和差异矩阵列的二维数组的数值;
[0027] 将每块稀疏矩阵列的二维数组索引值,与所述多个矩阵块的位置进行一一对应,选取差异矩阵列的数组值;
[0028] 假设稀疏矩阵列的二维数组里第N个行下标,是一维数组索引值A,差异矩阵列的二维数组里第N个行下标,是一维数组差异值B,与第N个二进制矩阵块C匹配,A是索引值数
组,B是差异值数组,C是二进制矩阵,A的每个值映射到C的矩阵值位置,即选取差异矩阵列
的数组值D,判定差异值数组B与选取差异矩阵列的数组值D的一致性,如果数值不一致,则
说明两个文件有差异,判定不一致的结果;如果数值一致,则依次判断所有块稀疏阵列是否
相同;
[0029] 如果所有块稀疏阵列值相同,则启用二次差异对比。
[0030] 进一步的,所述二次差异对比的步骤还包括:
[0031] 将字段差异哈希数组,存放到内存;
[0032] 对所述文件二进制矩阵的对应阵块,用SHA1的哈希算法来计算哈希值,然后与记录的哈希值一一对应,比较两值一致性;
[0033] 如果其中有哈希值不一致,则表明文件有差异,判定不一致的结果,如果所有的哈希值数据一致,则表明文件相同。
[0034] 为了解决上述技术问题,本申请还提供一种大文件差异对比装置,采用了如下所述的技术方案:包括获取模块,用于获取文件,提取所述文件的特征数据;
[0035] 数据结构生成模块,用于将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段;
[0036] 差异对比模块,用于根据所述多个字段的值,进行文件差异对比;及判定模块,用于判定文件差异对比结果。
[0037] 进一步的,所述获取模块包括:
[0038] 文件提取模块,用于获取所述文件;
[0039] 特征数据获取模块,用于计算所述文件的大小,根据所述文件的大小计算出矩阵比,划分文件二进制矩阵阵块的比例,根据文件二进制矩阵阵块的比例,计算奇偶值,提取
所述文件的二进制矩阵块值和哈希值。
[0040] 为了解决上述技术问题,本申请还提供一种计算机设备,采用了如下所述的技术方案:
[0041] 包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现上述的大文件差异对比方法的步骤。
[0042] 为了解决上述技术问题,本申请还提供一种计算机可读存储介质,采用了如下所述的技术方案:
[0043] 所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上述的大文件差异对比方法的步骤。
[0044] 与现有技术相比,本申请主要有以下有益效果:采用排列的矩阵块点值进行差异对比,然后用排列的矩阵块的哈希值,做二次差异对比,从个别到局部的扩大范围,减少误
判率,提高判定差异一致性;通过这种方式,获取的特征数据,是根据文件的二进制矩阵划
分阵块来定量,可以规定阵块的密度数,划分越密集,特征数据越多,我们可以根据文件的
容量来做出比例,方式简单便捷;减少占用内存资源,对大文件差异对比效率高,节省时间
和空间。

附图说明

[0045] 为了更清楚地说明本申请中的方案,下面将对本申请描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技
术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046] 图1是本申请可以应用于其中的示例性系统架构图;
[0047] 图2 是本申请的大文件差异对比方法的一个实施例的流程图;
[0048] 图3是本申请获取一次稀疏矩阵差异值的一种数值示意图;
[0049] 图4是本申请获取二次哈希差异值的一种数值示意图;
[0050] 图5是本申请创建或者更新文件特征数据的一种具体实施方式的流程图;
[0051] 图6是本申请的大文件差异对比装置的一个实施例的结构示意图;
[0052] 图7是本申请的计算机设备的一个实施例的结构示意图。

具体实施方式

[0053] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体
的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明
中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说
明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用
于描述特定顺序。
[0054] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同
的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和
隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0055] 为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请中的技术方案进行清楚、完整地描述。
[0056] 如图1所示,系统架构100可以包括第一终端设备101、第二终端设备102、第三终端设备103,网络104和服务器105。网络104用以在第一终端设备101、第二终端设备102、第三
终端设备103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如
有线、无线通信链路或者光纤电缆等等。
[0057] 用户可以使用第一终端设备101、第二终端设备102、第三终端设备103通过网络104与服务器105交互,以接收或发送消息等。第一终端设备101、第二终端设备102、第三终
端设备103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类
应用、即时通信工具、邮箱客户端、社交平台软件等。
[0058] 第一终端设备101、第二终端设备102、第三终端设备103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器
(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、
MP4( Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面
4 )播放器、膝上型便携计算机和台式计算机等等。
[0059] 服务器105可以是提供各种服务的服务器,例如对第一终端设备101、第二终端设备102、第三终端设备103上显示的页面提供支持的后台服务器。
[0060] 需要说明的是,本申请所提供的大文件差异对比方法一般由服务器/终端设备执行,相应地,大文件差异对比装置一般设置于服务器/终端设备中。
[0061] 应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0062] 继续参考图2,示出了根据本申请的大文件差异对比的方法的一个实施例的流程图。所述的大文件差异对比方法,包括以下步骤:
[0063] 步骤S201,获取文件,提取所述文件的特征数据。
[0064] 在本实施例中,大文件差异对比方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式接收大文件差异对比请求。需要指
出的是,上述无线连接方式可以包括但不限于3G/4G/5G连接、WiFi连接、蓝牙连接、WiMAX连
接、Zigbee连接、UWB( ultra wideband )连接、以及其他现在已知或将来开发的无线连接
方式。
[0065] 获取文件的方式很多,可以获取终端本地上、远程服务器上的文件。可以根据实际需要,看需要进行差异比对的文件在哪里进行获取。
[0066] 在本实施例中,提取所述文件的特征数据的步骤还包括:
[0067] 获取所述文件;
[0068] 计算所述文件的大小,根据所述文件的大小,计算出矩阵比,划分文件二进制矩阵阵块的比例;
[0069] 根据所述文件二进制矩阵阵块的比例,计算奇偶值;
[0070] 根据所述奇偶值,提取所述文件二进制矩阵块值和哈希值。
[0071] 步骤S202,将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段。
[0072] 在本实施例中,将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段的步骤具体包括:
[0073] 将所述特征数据生成数据结构;
[0074] 判断数据库的数据结构表是否存在,如果不存在,则创建数据结构表,将所述数据结构保存到所述数据结构表里。
[0075] 数据结构是特征数据的表现形式,其里面的每个字段可以映射到SQLite数据库的数据表字段上。多个字段可以包括奇偶值、矩阵分布比、稀疏矩阵列、差异矩阵列、差异哈希
数组、文件名、文件路径、修改时间戳等。数据结构解析如下:
[0076] 奇偶值:是每次监听创建或更改文件时,首先需要随机生成的值,是获取矩阵排列的位置必要条件。例如奇偶值是0时为偶数,奇偶值是1时为奇数。
[0077] 矩阵分布比:矩阵的方格分布横竖比,比如3:3,就是横向3个方格,竖向3个方格。
[0078] 稀疏矩阵列:在获取特征数据时,先根据奇偶值,如当前奇偶值是奇数,指定矩阵奇数排列顺序,然后每对一个矩阵,就生成一个稀疏矩阵,用数组存放稀疏矩阵里为1的位
置索引值;最后得出N个索引位置值的数组后,用数组保存,得出二维数组。
[0079] 差异矩阵列:根据上面稀疏矩阵列的位置索引值,所对应的数值,其保存方式与上面一样,其实就是一个映射关系,得出二维数组。
[0080] 差异哈希数组:当第一次差异对比后,判断全部都是一致了,用矩阵块的哈希值用二次差异对比;其方式是,根据奇偶值的相反值,如当前奇偶值是奇数,则相反值是偶数;然
后偶(奇)数矩阵排列顺序,然后每对一个矩阵,就生成一个哈希值,最后得出一维数组。
[0081] 文件名: 记录具体文件名,包括后缀名。
[0082] 文件路径:文件存放的完整路径。
[0083] 修改时间戳:对创建或更新文件,获取特征数据后,就保存一次时间戳。
[0084]
[0085] 由于大文件的特征数据具有使用价值,如果只是临时使用,则可以不存储到数据库中。但是很多情况下,大文件的特征数据具有多次使用的可能性,会频繁地用于分析、比
较等场合,所以需要存储到数据中,方便终端、服务器的使用。
[0086] 步骤S203,从数据库数据结构表,获取多个字段值,获取文件的特征数据。
[0087] 在本实施例中,文件的特征数据以数据中的多个字段值来体现的。所以,当进行差异比对时,提取相应的数据库数据结构表即可。
[0088] 步骤S204,根据字段矩阵分布比,把文件的二进制数据划分成多个矩阵块,存储多个矩阵块的索引值,可以将索引值存储到内存里。内存的IO速度非常快,这样可以保证读取
索引值的速度,从而可以快速对比索引值。
[0089] 步骤S205,存储字段稀疏矩阵列的二维数组索引值,和字段差异矩阵阵列的二维数组的数值,待对比差异。将字段稀疏矩阵列的二维数组索引值和数据字段差异矩阵阵列
的二维数组的数值存放在内存中,这样可以保证读取速度,为快速对比做准备。
[0090] 步骤S206,根据每块稀疏矩阵列的二维数组索引值,与现有文件二进制矩阵的位置一一对应,然后用差异矩阵阵列的值与每块稀疏矩阵列的二维数组索引值进行对比。相
当于将原文件的稀疏矩阵列矩阵列与目标文件的稀疏矩阵列做对比。如果目标文件的改动
较大,那有N(N≥2)块稀疏矩阵列上的数据块会有所不同。
[0091] 步骤S207,判断差异矩阵阵列的值与每块稀疏矩阵列的二维数组索引值是否一致。采用本步骤,可以判断文件的每块矩阵列是否存在差异,可以在很大的几率上,判断矩
阵的不同,在这一步就可以判断两个文件是否有差异性了。如果不一致,到达步骤S215,数
据有差异,判定文件不同,可以结束大文件差异对比流程;如果一致,则进入步骤S208。
[0092] 步骤S208,判断当前稀疏矩阵列是否比较结束。如果没有结束,则执行步骤S206,否则执行步骤S209。
[0093] 步骤S209,判断所有块稀疏矩阵列是否比较结束。如果没有结束,则执行步骤S210,否则执行步骤S211。
[0094] 步骤S210,读取下一块稀疏阵列数据。
[0095] 步骤S211,所有矩阵值相同,进行二次差异对比,将字段差异哈希数组存放到内存,待对比差异。
[0096] 二次差异对比的步骤包括:
[0097] 将字段差异哈希数组,存放到内存,目的直接、方便地快速读取,差异哈希数组;
[0098] 对文件二进制矩阵的对应阵块,用SHA1的哈希算法来计算哈希值,然后与记录的哈希值也就是字段差异哈希数组中的哈希值一一对应,比较两值一致性;
[0099] 如果其中有哈希值不一致的情况,则表明文件有差异,判定不一致的结果,如果所有的哈希值数据一致,则表明文件相同。
[0100] 根据多个字段的值,进行不同文件差异对比的步骤还包括:
[0101] 将多个字段分为奇偶值、矩阵分布比、稀疏矩阵列、差异矩阵列、差异哈希数组、文件名、文件路径、修改时间戳;
[0102] 根据矩阵分布比,把文件的二进制数据划分成多个矩阵块,存储多个矩阵块的索引值;
[0103] 存储稀疏矩阵列的二维数组索引值,和差异矩阵列的二维数组的数值;
[0104] 将每块稀疏矩阵列的二维数组索引值,与多个矩阵块的位置进行一一对应,选取差异矩阵列的数组值(一维数组);
[0105] 假设稀疏矩阵列的二维数组里第N个行下标,是一维数组索引值A(设为[1,3,5]);差异矩阵列的二维数组里第N个行下标,是一维数组差异值B(设为[1,1,0]);与第N个二进
制矩阵块C (设为[0,0,1,0,1,0,0,1,1])匹配;
[0106] 然后A是索引值数组(一维数组),B是差异值数组(一维数组),C是二进制矩阵(一维数组),A的每个值映射到C的矩阵值位置,即选取差异矩阵列的数组值D是[0,1,1];
[0107] 然后将B与D,两个数组里面的值对应的数组判断,就是判定差异值数组B与选取差异矩阵列的数组值D的一致性,如果数值不一致,则说明两个文件有差异,判定不一致的结
果;如果数值一致,则依次判断所有块稀疏阵列是否相同;
[0108] 如果所有块稀疏阵列值相同,则启用二次差异对比。
[0109] 本实施例中,所述二次差异对比的步骤还包括:
[0110] 将字段差异哈希数组,存放到内存;
[0111] 对现有文件二进制矩阵的对应阵块,用SHA1的哈希算法来计算哈希值,然后与记录哈希值一一对应,比较两值一致性;
[0112] 如果其中有哈希值不一致,则表明文件有差异,判定不一致的结果,进入步骤S215,如果所有的哈希值数据一致,则表明文件相同,进入步骤S214。
[0113] 步骤S212,计算当前文件二进制矩阵的对应阵块的哈希值,与记录哈希值一一对应,再进行差异一致性对比。
[0114] 步骤S213,判断所有哈希值是否都相同。如果其中有哈希值不一致,则表明文件有差异,判定不一致的结果,进入步骤S215,如果所有的哈希值数据一致,则表明文件相同,进
入步骤S214。
[0115] 步骤S214,数据一致,判定文件相同。
[0116] 步骤S215,数据有差异,判定文件不同。
[0117] 本申请通过采用排列的矩阵块点值进行差异对比,然后用排列的矩阵块的哈希值,做二次差异对比,从个别到局部的扩大范围,减少误判率,提高判定差异一致性;通过这
种方式,获取的特征数据,是根据文件的二进制矩阵划分阵块来定量,可以规定阵块的密度
数,划分越密集,特征数据越多,我们可以根据文件的容量来做出比例,方式简单便捷;减少
占用内存资源,对大文件差异对比效率高,节省时间和空间。
[0118] 需要强调的是,为进一步保证上述大文件差异对比信息的私密和安全性,上述大文件差异对比信息还可以存储于一区块链的节点中。
[0119] 本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用
密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验
证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品
服务层以及应用服务层等。
[0120] 本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置
顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备
的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中
描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例
程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布
式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境
中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0121] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读
取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储
介质可为磁碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)等非易失性存储介质,或随
机存储记忆体(Random Access Memory,RAM)等。
[0122] 应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤
的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一
部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻
执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他
步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0123] 进一步参考图3,为图2中采用的获取一次稀疏矩阵差异值的一种数值示意图。如图3所示,在九宫格矩阵图上,以左上角的小矩阵为例,用一次稀疏矩阵差异值为1的值,作
为位置索引,也就是第1、3、8、9的位置(位置顺序是从左到右,从上到下);与文件二进制数
据矩阵的小矩阵对应位置, 得出[0,1,0,1]的数组。
[0124] 进一步参考图4,为图2中采用的获取二次哈希差异值的一种数值示意图。如图4所示,在文件二进制数据矩阵上,分布9个小矩阵块,当前随机计算该9个小矩阵块的奇偶值为
偶值,即第2、4、6、8块的小矩阵块(位置顺序是从左到右,从上到下), 然后对这4块矩阵块
里面对应的9个数值,分别用SHA1的哈希算法来计算值,最后得出长度为4的哈希值数组。
①‑④的矩阵位置是对应差异矩阵列的矩阵块, 图4中表示现在的奇偶值是偶,则差异矩阵
列的矩阵块是第2、4、6、8块矩阵,则对应着①‑④序号的矩阵块。图4所示的是①‑④序号标
识的作用,这里提到的对这4块矩阵块里面对应的9个数值,分别用SHA1的哈希算法来计算
值,如对第2、4、6、8块矩阵块分别用SHA1的哈希算法来计算值是用于第一次差异对比用的。
图4左边的哈希数组是差异哈希数组,当第一次差异对比后,判断全部都是一致了,用矩阵
块的哈希值用二次差异对比;图4中表示现在的奇偶值是偶,生成差异哈希数组,是相反值
则是奇数;按奇数顺序获取图4中的矩阵,如[0,0,1,1,1,0,0,0,1],用SHA1算法生成哈希值
为:ef15469b85b82f42f3531646c84579b8bafea699, 则是图4左边的哈希数组的第1点, 如
此类推。这里提到SHA1算法生成哈希值为:ef15469b85b82f42f3531646c84579b8bafea699,
是对奇数矩阵块用SHA1算法生成哈希值,是用于第二次用哈希差异对比用的。
[0125] 进一步参考图5,为图2中采用的创建或者更新文件特征数据的一种具体实施方式的流程图。如图5所示,一种创建或者更新文件特征数据的方法,包括步骤:
[0126] S301,检测到文件创建或更改状态,获取文件的特征数据。需要说明的是,可以通过调用底层的文件系统提供的接口,来通过文件系统检测文件创建或者更改的状态。
[0127] S302,根据文件的大小,计算矩阵比,划分文件二进制矩阵阵块的比例。
[0128] 文件越大,划分二进制矩阵阵块的比例数量则越多。矩阵阵块的细密量越高,越有利于该文件的差异辨识。采用该步骤,为后续划分矩阵阵块、要生成差异矩阵列做准备。
[0129] S303,计算奇偶值。奇偶值是随机生成的一个值,奇偶值是奇值或是偶值。假如现在的奇偶值为奇值,该值有两个用处:
[0130] 第一、是为获取一次稀疏矩阵差异值做准备,是从奇值的排序获取,分别获取文件二进制矩阵阵块里的小矩阵块的差异矩阵数组。
[0131] 第二、是为获取二次哈希差异值做准备,是从偶值的排序获取文件二进制矩阵阵块里的小矩阵块的哈希值。
[0132] 步骤S303,计算奇偶值完成后,顺序进入步骤S304‑1和S305‑1或者进入步骤S304‑2和S305‑2,再进入步骤S306。
[0133] S304‑1,计算以奇排列的稀疏矩阵阵块,把稀疏矩阵为1的值,作为位置索引,把二进制矩阵块的对应位置值保存为数组,得出稀疏矩阵列二维数组,差异矩阵列二维数组。
[0134] S305‑1,计算以偶排列的二进制矩阵块,把每个阵块的所有值,用SHA1的哈希算法来计算哈希值,最后将哈希值保存为一维数组。
[0135] S304‑2,计算以偶排列的稀疏矩阵阵块,把稀疏矩阵为1的值,作为位置索引,把二进制矩阵块的对应位置值保存为数组,得出稀疏矩阵列二维数组,差异矩阵列二维数组。
[0136] S305‑2,计算以奇排列的二进制矩阵块,把每个阵块的所有值,用SHA1的哈希算法来计算哈希值,最后将哈希值保存为一维数组。
[0137] S306,将数据特征奇偶值、矩阵分布比值、稀疏矩阵列数组、差异文件名、文件路径、修改时间戳构成字段,组成数据结构,将数据结构保存在内存中。该数据结构是为目标
文件做差异对比操作,有充足的条件来对比目标文件是否存在差异。
[0138] S307,判断数据结构表是否存在,如果存在,则进入步骤S309,如果不存在则进入步骤S308。可以但是不限于使用SQLIte数据库,来存储得出的数据结构,保存在文件系统
上。这样做的好处是,保证计算机重启后,虽然内存数据丢失,但是文件系统是基于磁盘上
运行的,即使重启后数据依然存在,确保数据的完整性。
[0139] S308,创建数据结构表。保证数据结构表是存在的,才能保存得出的数据结构。
[0140] S309,将数据结构保存到数据结构表中。
[0141] 通过及时检测到文件创建或更改状态,可以根据实际需要,及时快捷对大文件进行差异对比。
[0142] 进一步参考图6,作为对上述图2所示方法的实现,本申请提供了一种大文件差异对比装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应
用于各种电子设备中。
[0143] 如图6所示,本实施例所述的大文件差异对比装置400包括:获取模块401、数据结构生成模块402、差异对比模块403以及判定模块404。其中:
[0144] 获取模块401用于获取文件,提取所述文件的特征数据;
[0145] 数据结构生成模块402用于将所述特征数据生成数据结构,保存到数据库中,所述数据结构包括多个字段;
[0146] 差异对比模块403用于根据所述多个字段的值,进行文件差异对比;
[0147] 判定模块404用于判定文件差异对比结果。
[0148] 采用排列的矩阵块点值进行差异对比,然后用排列的矩阵块的哈希值,做二次差异对比,从个别到局部的扩大范围,减少误判率,提高判定差异一致性;通过这种方式,获取
的特征数据,是根据文件的二进制矩阵划分阵块来定量,可以规定阵块的密度数,划分越密
集,特征数据越多,我们可以根据文件的容量来做出比例,方式简单便捷;减少占用内存资
源,对大文件差异对比效率高,节省时间和空间。
[0149] 在本实施例的一些可选的实现方式中,获取模块401还包括:
[0150] 文件提取模块411,用于获取所述文件;
[0151] 特征数据获取模块412,用于计算所述文件的大小,根据所述文件的大小计算出矩阵比,划分文件二进制矩阵阵块的比例,根据文件二进制矩阵阵块的比例,计算奇偶值,提
取所述文件的二进制矩阵块值和哈希值。
[0152] 获取文件后,再提取文件的特征数据,方便记忆文件每一次更改或者状态更新后的特征数据,为后续进行大文件差异对比提供数据源。
[0153] 为解决上述技术问题,本申请还提供计算机设备。具体请参阅图7,图7为本实施例计算机设备基本结构框图。
[0154] 所述计算机设备6包括通过系统总线相互通信连接存储器61、处理器62、网络接口63。需要指出的是,图中仅示出了具有组件存储器61、处理器62和网络接口63的计算机设备
6,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储
的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集
成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-
Programmable Gate Array,FPGA)、数字处理器 (Digital Signal Processor,DSP)、嵌入
式设备等。
[0155] 所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人
机交互。
[0156] 所述存储器61至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访
问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存
储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器61可以是所述计算机
设备6的内部存储单元,例如该计算机设备6的硬盘或内存。在另一些实施例中,所述存储器
61也可以是所述计算机设备6的外部存储设备,例如该计算机设备6上配备的插接式硬盘,
智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash 
Card)等。当然,所述存储器61还可以既包括所述计算机设备6的内部存储单元也包括其外
部存储设备。本实施例中,所述存储器61通常用于存储安装于所述计算机设备6的操作系统
和各类应用软件,例如大文件差异对比方法的计算机可读指令等。此外,所述存储器61还可
以用于暂时地存储已经输出或者将要输出的各类数据。
[0157] 所述处理器62在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制所述计
算机设备6的总体操作。本实施例中,所述处理器62用于运行所述存储器61中存储的计算机
可读指令或者处理数据,例如运行所述大文件差异对比方法的计算机可读指令。
[0158] 所述网络接口63可包括无线网络接口或有线网络接口,该网络接口63通常用于在所述计算机设备6与其他电子设备之间建立通信连接。
[0159] 采用本实施例,采用排列的矩阵块点值进行差异对比,然后用排列的矩阵块的哈希值,做二次差异对比,从个别到局部的扩大范围,减少误判率,提高判定差异一致性;通过
这种方式,获取的特征数据,是根据文件的二进制矩阵划分阵块来定量,可以规定阵块的密
度数,划分越密集,特征数据越多,我们可以根据文件的容量来做出比例,方式简单便捷;减
少占用内存资源,对大文件差异对比效率高,节省时间和空间。
[0160] 本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以
使所述至少一个处理器执行如上述的大文件差异对比方法的步骤。
[0161] 采用本实施例,采用排列的矩阵块点值进行差异对比,然后用排列的矩阵块的哈希值,做二次差异对比,从个别到局部的扩大范围,减少误判率,提高判定差异一致性;通过
这种方式,获取的特征数据,是根据文件的二进制矩阵划分阵块来定量,可以规定阵块的密
度数,划分越密集,特征数据越多,我们可以根据文件的容量来做出比例,方式简单便捷;减
少占用内存资源,对大文件差异对比效率高,节省时间和空间。
[0162] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下
前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做
出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服
务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
[0163] 显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同
的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻
全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其
依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进
行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他
相关的技术领域,均同理在本申请专利保护范围之内。