CN103049263A - 一种基于相似性的文件分类方法 - Google Patents

一种基于相似性的文件分类方法 Download PDF

Info

Publication number
CN103049263A
CN103049263A CN2012105374717A CN201210537471A CN103049263A CN 103049263 A CN103049263 A CN 103049263A CN 2012105374717 A CN2012105374717 A CN 2012105374717A CN 201210537471 A CN201210537471 A CN 201210537471A CN 103049263 A CN103049263 A CN 103049263A
Authority
CN
China
Prior art keywords
byte
verification
window
file
similarity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012105374717A
Other languages
English (en)
Other versions
CN103049263B (zh
Inventor
王芳
冯丹
陈俭喜
杜鑫
郑超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201210537471.7A priority Critical patent/CN103049263B/zh
Publication of CN103049263A publication Critical patent/CN103049263A/zh
Application granted granted Critical
Publication of CN103049263B publication Critical patent/CN103049263B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种基于相似性的文件分类方法,属于计算机存储系统领域,解决现有分类方法计算量和内存占用较大的问题。本发明包括分块步骤、计算校验和步骤、统计步骤和分类步骤。本发明对文件数据的处理不需要随机读写,只需要从头到尾的进行一次处理,就可以完成分块,计算校验和,统计,排序以及最终确定分类所有步骤;可以高效的获取文件间的关联信息,将在二进制数据层面上相似的文件划归为一类,对文件给出所属类别的唯一标识,在判定两个文件是否相似时,只需要判断它们所属类别的标识是否相同即可,处理速度快,占用内存少,可以通过运行参数调整判定精度;适用于各类需要获取数据相似性的应用,特别面向存储、数据去重的相关应用。

Description

一种基于相似性的文件分类方法
技术领域
本发明属于计算机存储系统领域,具体涉及一种基于相似性的文件分类方法,用于提高按相似性对文件进行分类时的处理速度,降低内存占用。
背景技术
图灵奖获得者Jim Gray提出了一个经验定律:网络环境下,每18个月产生的数据量等于有史以来数据量之和。国际数据公司(IDC)最新“数字宇宙”研究结果显示,全世界的信息量每两年以超过翻番的速度增长,2011年产生和复制1.8ZB的海量数据,其增长速度超过摩尔定律。大数据已经成为学术界与工业界讨论的热点话题。如何有效的存储这些数据已经成为目前存储系统面临的一大挑战。
分布式存储系统解决了海量数据的存储问题,重复数据删除技术则解决了节省存储空间和网络带宽的问题。对于像网盘这样的网络应用,由于其管理着海量的数据,而且文件之间有较高的相似性,利用相似性进行重复数据删除可以起到提高存储空间使用效率,提升系统输入输出吞吐量的效果。
目前业界所使用的线上重复数据删除系统多是采用了局部性原理来提高重删处理的吞吐率,缓解磁盘瓶颈。最新的研究成果显示,利用相似性可以在损失少量重复数据删除率的情况下,提升重复数据删除的速度,吞吐率,减少重复数据删除时占用的资源。所以,将这一新的技术加以研究,解决其在延迟,删除等方面的问题后,将显著提升存储系统的磁盘利用率,吞吐率,降低对网络的需求。
目前公开的主流相似数据检测技术,主要有三种,第一种是基于瓦(shingle)的检测技术,见:Broder AZ.Identifying and filtering near-duplicatedocuments.In:Giancarlo R,Sankoff D,eds.Proc.of the 11th Annual Symp.OnCombinatorial Pattern Matching.London:Springer-Verlag,2000.1-10;该方法实现简单,适用性广,在实际系统中多有使用,但计算量大,内存占用大;第二种是基于布隆过滤器(bloom filter)的检测技术,见:Jain N,Dahlin M,TewariR.Taper:Tiered approach for eliminating redundancy in replica synchronization.In:Proc.of the4th Usenix Conf.on File and Storage Technologies(FAST2005).Berkeley:USENIX Association,2005.281-294.这种方法比第一种方法在时间和空间开销有较大优势,但存在一定的错误匹配概率,计算量和内存占用仍然有进一步减小的空间;第三种是基于模式匹配的检测技术,见:Manber U.Finding similar files in a large file system.In:Proc.of the USENIX Winter1994Technical Conf.Berkeley:USENIX Association,1994.1-10.该方法则需要对整个文件集进行扫描,也没有解决计算量和内存占用较大的问题。
MD5哈希算法与SHA1哈希算法,都是计算机广泛使用的哈希算法,主流编程语言已有MD5哈希算法与SHA1哈希算法的实现。
发明内容
本发明提供一种基于相似性的文件分类方法,解决现有分类方法计算量和内存占用较大的问题。
本发明所提供的一种基于相似性的文件分类方法,包括下述步骤:
(1)分块步骤,包括下述子步骤:
(1.1)将文件字节流上的开始与结束位置作为两个分界点,将一个窗口的后沿置于文件字节流的开始位置上,利用哈希函数计算窗口内字节的哈希值,所述窗口长度L0为4字节~1024字节;所述哈希函数的散列空间不大于设定的块最大字节数P,P=128~8192;
(1.2)判断所述哈希值与预定值是否相同,是则进行子步骤(1.3),否则转子步骤(1.4),所述预定值从所述哈希函数的值域中任意选择一个;
(1.3)将窗口的前沿所在字节作为当前分界点,判断当前分界点与前一个分界点之间的字节数是否小于设定的块最小字节数,是则忽略当前分界点,执行子步骤(1.4),否则执行子步骤(1.5),所述块最小字节数为8~P;
(1.4)将所述窗口沿文件字节流滑动一个字节,判断窗口前沿与前一个分界点之间的字节数是否达到设定的块最大字节数P,是则把窗口前沿设定为当前分界点,执行子步骤(1.5),否则计算窗口内字节的哈希值,转子步骤(1.2);
(1.5)将当前分界点与前一个分界点之间的字节作为一个块,记为当前块,将窗口后沿置于文件字节流上当前分界点的下一个字节处,执行步骤(2);
(2)计算校验和步骤:
计算检验和s,并将其保存在临时校验和结果集中,
s=a+216b,
其中,a、b为中间参数:
a = ( Σ i = 1 L 1 x i ) mod M ,
b = ( Σ i = 1 L 1 ( L 1 - i - 1 ) x i ) mod M ,
L1为当前块长度,xi表示当前块中的第i个字节,1≤i≤L1,M为大于215且小于232的整数;
重复执行步骤(1)和步骤(2),直至计算完文件字节流的最后一个块的校验和;
(3)统计步骤,包括下述子步骤:
(3.1)统计各个相同校验和出现的次数;
(3.2)按相同校验和出现次数从多到少,对所有校验和进行排序,形成校验和序列,相同校验和在校验和序列中仅出现一次;
(4)分类步骤,包括下述子步骤:
(4.1)判断校验和序列中的校验和数目是否大于或等于设定的取样数N,是则执行子步骤(4.2),否则分类失败,返回分类失败提示;
N=1~10,取样数越大,分类精度越高,但系统开销越大,反之亦然;
(4.2)在所述校验和序列中取前N个校验和,计算其指纹值,将该指纹值作为文件所属类别标识。
所述的基于相似性的文件分类方法,其特征在于:
所述分块步骤中,所述哈希函数为:
H ( X , L 0 , P ) = ( Σ j = 1 L 0 x j ) mod P ,
或者:
H ( X , L 0 , P ) = ( Σ j = 1 L 0 - 1 ( x j + 1 - x j ) ) mod P ,
其中,X为窗口中的字节序列,xj为X中的第j个字节,L0为窗口长度,P为块最大字节数。
所述的基于相似性的文件分类方法,其特征在于:
所述分类步骤中,计算指纹值采用MD5哈希算法或者SHA1哈希算法。
本发明对文件数据的处理不需要随机读写,只需要从头到尾的进行一次处理,就可以完成分块,计算校验和,统计,排序以及最终确定分类所有步骤;可以高效的获取文件间的关联信息,将在二进制数据层面上相似的文件划归为一类,对文件给出所属类别的唯一标识,在判定两个文件是否相似时,只需要判断它们所属类别的标识是否相同即可,具有以下特点:
(1)处理速度快;背景技术中所介绍的方法中,基于布隆过滤器的方法最快,但是它需要对每一个分块采用MD5哈希算法或者SHA1哈希算法计算指纹值,本发明主要计算开销为步骤(2)计算分块的校验和以及步骤(3)对所有校验和进行排序,对每一个分块仅计算分块的校验和,单纯的校验和计算比采用MD5哈希算法或者SHA1哈希算法计算指纹值开销小得多;
(2)占用内存少;
背景技术中,基于布隆过滤器的方法内存占用最少,布隆过滤器的匹配精度与其布隆过滤器的大小成正比,当布隆过滤器大小与文件划分出的块数一样时,错误匹配的概率高达69%,为了取得更高的匹配精度,势必要增大布隆过滤器的大小,只有当布隆过滤器的大小增大至文件划分出的块数的11倍时,错误匹配的概率才能降至1%以下。这意味着对于1M大小的文件,按128字节的平均块大小来计算,就需要11K字节大小的布隆过滤器。
与上述方法相比,分块步骤、计算校验和步骤以及统计步骤中的内存占用没有明显减少,但是在分类步骤中,无论文件大小,内存需求仅为4N字节,N为设定的取样数,不会大于10,乘以4是因为每个取样数占用4个字节,即使按最大取样数10来计算,内存总量40字节也远远小于上述方法所需要的11K字节。
(3)可以通过运行参数调整判定精度;
本发明设定的取样数N越大,分类精度越高,但系统开销越大,反之亦然。
本发明适用于各类需要获取数据相似性的应用,特别面向存储、数据去重的相关应用。
附图说明
图1为本发明流程框图;
图2为分块步骤和计算校验和步骤流程示意图;
图3为统计步骤流程示意图;
图4为分类步骤的流程示意图。
具体实施方式
以下结合附图和实施例对本发明进一步说明。
实施例中,待处理文件长度为1024字节,为描述简便起见,设其1~384字节为全0,385~640字节为全1,641~896字节为全2,897~1024字节为全8。设块最大字节数P为128,块最小字节数为16,取样数为3。
本实施例,包括下述步骤:
(1)分块步骤,包括下述子步骤:
(1.1)将文件字节流上的开始位置0与结束位置1023作为两个分界点,将一个窗口的后沿置于文件字节流的开始位置0上,窗口前沿在字节流的位置7上,利用哈希函数计算窗口内字节的哈希值=0,所述窗口长度L0为8字节;所述哈希函数为:
H ( X , L 0 , P ) = ( Σ j = 1 L 0 x j ) mod P ,
其中,X为窗口中的字节序列,xj为X中的第j个字节,P=128;
(1.2)判断所述哈希值与预定值64是否相同,是则进行子步骤(1.3),否则转子步骤(1.4),所述预定值从所述哈希函数的值域中选择;
(1.3)将窗口的前沿所在字节作为当前分界点,判断当前分界点与前一个分界点之间的字节数是否小于设定的块最小字节数16,是则忽略当前分界点,执行子步骤(1.4),否则执行子步骤(1.5);
(1.4)将所述窗口沿文件字节流滑动一个字节,判断窗口前沿与前一个分界点之间的字节数是否达到设定的块最大字节数128,是则把窗口前沿设定为当前分界点,执行子步骤(1.5),否则计算窗口内字节的哈希值,转子步骤(1.2);
(1.5)将当前分界点与前一个分界点之间的字节作为一个块,记为当前块,将窗口后沿置于文件字节流上当前分界点的下一个字节处,执行步骤(2);
按照上述步骤,文件最后被分为15块,分别为:1~128字节,129~256字节,257~384字节,385~512字节,513~640字节,641~768字节,769~896字节,897~912字节,913~928字节,929~944字节,945~960字节,961~976字节,977~992字节,993~1008字节,1009~1024字节;
(2)计算校验和步骤:
计算检验和s,并将其保存在临时校验和结果集中,
s=a+216b,
其中,a、b为中间参数:
a = ( Σ i = 1 L 1 x i ) mod M ,
b = ( Σ i = 1 L 1 ( L 1 - i - 1 ) x i ) mod M ,
L1为当前块长度,xi表示当前块中的第i个字节,1≤i≤L1,M=216
对于第一块,即第1~128字节,块长度L1为128,1≤i≤128,计算得到,a=0,b=0;检验和s=a+216b=0+216×0=0,保存在临时校验和结果集中,
重复执行步骤(1)和步骤(2),直至计算完文件字节流的最后一个块的校验和;最终得到的校验和临时结果集为:0,0,0,8384,8384,16768,16768,1216,1216,1216,1216,1216,1216,1216,1216;
(3)统计步骤,包括下述子步骤:
(3.1)统计各个相同校验和出现的次数;
得到结果为:0出现3次,8384出现2次,16768出现2次,1216出现8次;
(3.2)按相同校验和出现次数从多到少,对所有校验和进行排序,形成校验和序列,相同校验和在校验和序列中仅出现一次;
最终得到的校验和序列为:1216,0,8384,16768;
(4)分类步骤,包括下述子步骤:
(4.1)判断校验和序列中的校验和数目是否大于或等于设定的取样数3,是则执行子步骤(4.2),否则分类失败,返回分类失败提示;
本实施例中,校验和序列中的数目大于3,执行子步骤(4.2);
(4.2)在所述校验和序列中取前3个校验和1216、0、8384,采用MD5哈希算法计算其指纹值,计算时,将每个校验和按4字节整型,然后对12个字节计算指纹值为:d96890f8b22994e2e4bd836f4d269074,将该指纹值作为文件所属类别标识。
如果另外一个文件所属类别标识与本实施例的文件所属类别标识一致,则表明这两个文件在二进制层面上有极大概率是相似的。

Claims (3)

1.一种基于相似性的文件分类方法,包括下述步骤:
(1)分块步骤,包括下述子步骤:
(1.1)将文件字节流上的开始与结束位置作为两个分界点,将一个窗口的后沿置于文件字节流的开始位置上,利用哈希函数计算窗口内字节的哈希值,所述窗口长度L0为4字节~1024字节;所述哈希函数的散列空间不大于设定的块最大字节数P,P=128~8192;
(1.2)判断所述哈希值与预定值是否相同,是则进行子步骤(1.3),否则转子步骤(1.4),所述预定值从所述哈希函数的值域中任意选择一个;
(1.3)将窗口的前沿所在字节作为当前分界点,判断当前分界点与前一个分界点之间的字节数是否小于设定的块最小字节数,是则忽略当前分界点,执行子步骤(1.4),否则执行子步骤(1.5),所述块最小字节数为8~P;
(1.4)将所述窗口沿文件字节流滑动一个字节,判断窗口前沿与前一个分界点之间的字节数是否达到设定的块最大字节数P,是则把窗口前沿设定为当前分界点,执行子步骤(1.5),否则计算窗口内字节的哈希值,转子步骤(1.2);
(1.5)将当前分界点与前一个分界点之间的字节作为一个块,记为当前块,将窗口后沿置于文件字节流上当前分界点的下一个字节处,执行步骤(2);
(2)计算校验和步骤:
计算检验和s,并将其保存在临时校验和结果集中,
s=a+216b,
其中,a、b为中间参数:
a = ( Σ i = 1 L 1 x i ) mod M ,
b = ( Σ i = 1 L 1 ( L 1 - i - 1 ) x i ) mod M ,
L1为当前块长度,xi表示当前块中的第i个字节,1≤i≤L1,M为大于215且小于232的整数;
重复执行步骤(1)和步骤(2),直至计算完文件字节流的最后一个块的校验和;
(3)统计步骤,包括下述子步骤:
(3.1)统计各个相同校验和出现的次数;
(3.2)按相同校验和出现次数从多到少,对所有校验和进行排序,形成校验和序列,相同校验和在校验和序列中仅出现一次;
(4)分类步骤,包括下述子步骤:
(4.1)判断校验和序列中的校验和数目是否大于或等于设定的取样数N,是则执行子步骤(4.2),否则分类失败,返回分类失败提示;
N=1~10,取样数越大,分类精度越高,但系统开销越大,反之亦然;
(4.2)在所述校验和序列中取前N个校验和,计算其指纹值,将该指纹值作为文件所属类别标识。
2.如权利要求1所述的基于相似性的文件分类方法,其特征在于:
所述分块步骤中,所述哈希函数为:
H ( X , L 0 , P ) = ( Σ j = 1 L 0 x j ) mod P ,
或者:
H ( X , L 0 , P ) = ( Σ j = 1 L 0 - 1 ( x j + 1 - x j ) ) mod P ,
其中,X为窗口中的字节序列,xj为X中的第j个字节,L0为窗口长度,P为块最大字节数。
3.如权利要求1所述的基于相似性的文件分类方法,其特征在于:
所述分类步骤中,计算指纹值采用MD5哈希算法或者SHA1哈希算法。
CN201210537471.7A 2012-12-12 2012-12-12 一种基于相似性的文件分类方法 Active CN103049263B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210537471.7A CN103049263B (zh) 2012-12-12 2012-12-12 一种基于相似性的文件分类方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210537471.7A CN103049263B (zh) 2012-12-12 2012-12-12 一种基于相似性的文件分类方法

Publications (2)

Publication Number Publication Date
CN103049263A true CN103049263A (zh) 2013-04-17
CN103049263B CN103049263B (zh) 2015-06-10

Family

ID=48061915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210537471.7A Active CN103049263B (zh) 2012-12-12 2012-12-12 一种基于相似性的文件分类方法

Country Status (1)

Country Link
CN (1) CN103049263B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677238A (zh) * 2015-12-28 2016-06-15 国云科技股份有限公司 一种基于分布式存储重复数据删除的虚拟机系统盘的方法
WO2018054217A1 (zh) * 2016-09-21 2018-03-29 中国科学院信息工程研究所 一种摘要生成与网络流量检测的方法、系统及设备
CN108241639A (zh) * 2016-12-23 2018-07-03 航天星图科技(北京)有限公司 一种数据去重方法
CN110347308A (zh) * 2019-06-12 2019-10-18 东北石油大学 移动终端清理相似文件的方法和装置
CN112214985A (zh) * 2020-10-22 2021-01-12 新华三信息安全技术有限公司 一种文件类别检测方法、装置、存储介质及电子设备
CN113076059A (zh) * 2021-03-05 2021-07-06 南瑞集团有限公司 一种基于ram分块算法的控制分块大小的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1458580A (zh) * 2002-03-01 2003-11-26 惠普开发有限公司 文档分类方法和设备
US20070203885A1 (en) * 2006-02-28 2007-08-30 Korea Advanced Institute Of Science & Technology Document Classification Method, and Computer Readable Record Medium Having Program for Executing Document Classification Method By Computer
CN102214210A (zh) * 2011-05-16 2011-10-12 成都市华为赛门铁克科技有限公司 重复数据处理方法、装置和系统
CN102222085A (zh) * 2011-05-17 2011-10-19 华中科技大学 一种基于相似性与局部性结合的重复数据删除方法
CN102609338A (zh) * 2012-02-05 2012-07-25 四川大学 一种逆向的文件增量归档方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1458580A (zh) * 2002-03-01 2003-11-26 惠普开发有限公司 文档分类方法和设备
US20070203885A1 (en) * 2006-02-28 2007-08-30 Korea Advanced Institute Of Science & Technology Document Classification Method, and Computer Readable Record Medium Having Program for Executing Document Classification Method By Computer
CN102214210A (zh) * 2011-05-16 2011-10-12 成都市华为赛门铁克科技有限公司 重复数据处理方法、装置和系统
CN102222085A (zh) * 2011-05-17 2011-10-19 华中科技大学 一种基于相似性与局部性结合的重复数据删除方法
CN102609338A (zh) * 2012-02-05 2012-07-25 四川大学 一种逆向的文件增量归档方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677238A (zh) * 2015-12-28 2016-06-15 国云科技股份有限公司 一种基于分布式存储重复数据删除的虚拟机系统盘的方法
WO2018054217A1 (zh) * 2016-09-21 2018-03-29 中国科学院信息工程研究所 一种摘要生成与网络流量检测的方法、系统及设备
CN108241639A (zh) * 2016-12-23 2018-07-03 航天星图科技(北京)有限公司 一种数据去重方法
CN108241639B (zh) * 2016-12-23 2019-07-23 中科星图股份有限公司 一种数据去重方法
CN110347308A (zh) * 2019-06-12 2019-10-18 东北石油大学 移动终端清理相似文件的方法和装置
CN112214985A (zh) * 2020-10-22 2021-01-12 新华三信息安全技术有限公司 一种文件类别检测方法、装置、存储介质及电子设备
CN113076059A (zh) * 2021-03-05 2021-07-06 南瑞集团有限公司 一种基于ram分块算法的控制分块大小的方法
CN113076059B (zh) * 2021-03-05 2022-08-02 南瑞集团有限公司 一种基于ram分块算法的控制分块大小的方法

Also Published As

Publication number Publication date
CN103049263B (zh) 2015-06-10

Similar Documents

Publication Publication Date Title
CN103049263B (zh) 一种基于相似性的文件分类方法
US10579661B2 (en) System and method for machine learning and classifying data
CN110347651B (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN103150260B (zh) 重复数据删除方法和装置
CN110196848B (zh) 一种面向公共资源交易数据的清洗去重方法及其系统
CN104572679B (zh) 舆情数据存储方法和装置
CN103136247A (zh) 属性数据区间划分方法及装置
CN107506260A (zh) 一种动态分块数据库增量备份方法
US11620065B2 (en) Variable length deduplication of stored data
CN104123280A (zh) 文件比对方法和设备
CN106020722A (zh) 一种云存储系统的重复数据去重方法、装置及系统
CN108804661A (zh) 一种云存储系统中基于模糊聚类的重复数据删除方法
CN111209257B (zh) 一种文件系统碎片化的方法及装置
CN105488471B (zh) 一种字形识别方法及装置
CN104809256A (zh) 一种数据去重方法及系统
CN102521713B (zh) 数据处理装置和数据处理方法
CN104391961A (zh) 千万级小文件数据的一种读写解决策略
CN117743870B (zh) 一种基于大数据的水利数据管理系统
CN110175155A (zh) 一种文件去重处理的方法和系统
WO2016048263A1 (en) Identification of content-defined chunk boundaries
CN106599320A (zh) 一种文件信息摘要值计算方法及装置
CN104281412A (zh) 一种在数据存储前去除重复数据的方法
CN104615948A (zh) 一种自动识别文件完整性与恢复的方法
CN111158994B (zh) 一种压测性能测试方法及装置
CN112733537A (zh) 文本去重方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant