发明内容
本发明实施例提供一种重复数据删除方法和装置,以降低文件的数据块重复率,提高文件存储的空间利用率。
本发明实施例一方面提供一种重复数据删除方法,包括:
将待处理文件划分成至少两个数据块;
计算所述待处理文件中各数据块的数据指纹;
根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作,其中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。
在第一方面的第一种可能的实施方式中,在计算所述待处理文件中各数据块的数据指纹之后,还包括:
根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表包括:
在计算所述待处理文件中各数据块的数据指纹之后,或在计算每个数据块的数据指纹之后,统计各数据指纹的出现次数;
将出现次数达到设定门限值的数据指纹写入热点哈希表中。
结合第一方面,在第一方面的第三种可能的实施方式中,将待处理文件划分成至少两个数据块包括:将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块;
则计算所述待处理文件中各数据块的数据指纹之后,还包括:
根据每个所述中间文件中各数据块的数据指纹,更新所述中间文件对应的哈希表;
根据所述中间文件的哈希表对所述中间文件进行去重操作;
在所述中间文件的去重处理完成后,清空所述中间文件对应的哈希表。
结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作包括:
在根据所述中间文件的哈希表对所述中间文件进行去重操作之前,根据所述中间文件每个数据块的数据指纹,在所述热点哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块;
当匹配不一致时,触发所述根据所述中间文件的哈希表对所述中间文件进行的去重操作。
结合第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式,在第一方面的第五种可能实施方式中,根据所述中间文件的哈希表对所述中间文件进行去重操作包括:
根据所述中间文件每个数据块的数据指纹,在所述中间文件的哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块。
结合第一方面到第一方面的第四种实施方式,在第一方面的第六种可能实施方式中,计算所述待处理文件中各数据块的数据指纹之前,还包括:对各数据块进行压缩。
本发明实施例另一方面提供一种重复数据删除装置,包括:
数据块划分模块,用于将待处理文件划分成至少两个数据块;
计算模块,用于计算所述待处理文件中各数据块的数据指纹;
第一去重模块,用于根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作,其中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。
在第二方面的第一种可能的实施方式中,上述重复数据删除装置还包括:
热点哈希表更新模块,用于在计算所述待处理文件中各数据块的数据指纹之后,根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述热点哈希表更新模块包括:
统计单元,用于在计算所述待处理文件中各数据块的数据指纹之后,或在计算每个数据块的数据指纹之后,统计各数据指纹的出现次数;
写入单元,用于将出现次数达到设定门限值的数据指纹写入热点哈希表中。
结合第二方面,在第二方面的第三种可能的实施方式中,数据块划分模块具体用于将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块;
所述装置还包括:
更新模块,用于在计算所述待处理文件中各数据块的数据指纹之后,根据每个所述中间文件中各数据块的数据指纹,更新所述中间文件对应的哈希表;
第二去重模块,用于根据所述中间文件的哈希表对所述中间文件进行去重操作;
清空模块,用于在所述中间文件的去重处理完成后,清空所述中间文件对应的哈希表。
结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述第一去重模块包括:
第一匹配单元,用于在根据所述中间文件的哈希表对所述中间文件进行去重操作之前,根据所述中间文件每个数据块的数据指纹,在所述热点哈希表的数据指纹中进行匹配;
第一删除单元,用于当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块;
触发单元,用于当匹配不一致时,触发所述第二去重模块根据所述中间文件的哈希表对所述中间文件进行的去重操作。
结合第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式,在第二方面的第五种可能实施方式中,所述第二去重模块包括:
第二匹配单元,用于根据所述中间文件每个数据块的数据指纹,在所述中间文件的哈希表的数据指纹中进行匹配;
比较删除单元,用于当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块。
结合第二方面到第二方面的第四种实施方式,在第二方面的第六种可能实施方式中,上述重复数据删除装置还包括:
压缩模块,用于在计算所述待处理文件中各数据块的数据指纹之前,对各数据块进行压缩。
本发明实施例的重复数据删除方法和装置,通过使用热点哈希表进行去重操作,使得对待处理文件的去重操作可以考虑重复出现次数较高的数据指纹,特别是能够考虑在多个文件中重复出现的数据指纹,能够在存储过程中降低文件数据块的重复率,提高文件存储的空间利用率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明重复数据删除方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
步骤101、将待处理文件划分成至少两个数据块。
本步骤中,待处理文件指的是一次存储动作下包括的所有文件,可以是单文件、多文件、单个卷及多虚拟数据等。此外,可根据待处理文件的内容或者备份场景选择划分方法,常用的划分方法如定长划分、滑块划分等。一般的,定长划分是最简捷的方法,性能比较高,适合用于将稳定的文件划分成数据块。
步骤102、计算所述待处理文件中各数据块的数据指纹。
本步骤中,对数据块进行计算获取数据指纹的方法有很多,一般的,MD5和SHA1算法计算所得的数据指纹的碰撞几率比较小,因此,本实施例中可以采用MD5算法或SHA1算法计算待处理文件中各数据块的数据指纹。
步骤103、根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作。
本步骤中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。其中,该至少一个文件可以指当前待处理的文件,也可以指获取到该热点哈希表的其它文件,例如,已经处理过的历史文件,或者是历史文件和当前待处理文件二者的结合。
本实施例的重复数据删除方法,通过使用热点哈希表进行去重操作,使得对待处理文件的去重操作可以考虑重复出现次数较高的数据指纹,特别是能够考虑在多个文件中重复出现的数据指纹,能够在存储过程中降低文件数据块的重复率,提高文件存储的空间利用率。此外,热点哈希表区别于一般的哈希表,并非存储唯一数据块的数据指纹,而是仅存储重复次数高的数据指纹,因此其数据量规模较小,可减小对内存的占用。
下面采用几个具体的实施例,对图1所示方法实施例的技术方案进行详细说明。
图2为本发明重复数据删除方法实施例二的流程图,如图2所示,本实施例是针对热点哈希表已作为模版存储在内存的情况下的重复数据删除方法,本实施例的方法可以包括:
步骤201、将待处理文件划分成至少两个数据块。
本步骤中,采用定长划分或滑块划分的方法将待处理文件划分成至少两个数据块。一般的,若系统规定的数据块过大,则会影响处理效率,优选的,在系统中规定每个数据块大小为64K。对于待处理文件,可以直接将该待处理文件划分成至少两个数据块;或者,将该待处理文件划分成至少两个数据块包括:将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块。
本实施例将以将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块的重复数据删除方法为例进行详细说明,直接将该待处理文件划分成至少两个数据块的重复数据删除方法与之类同,在此不再赘述。
步骤202、对各数据块进行压缩。
本步骤中,可以借助压缩工具对步骤201中划分的至少两个数据块进行压缩,下述步骤都在该压缩格式下进行,以便进一步减少存储空间。
步骤203、读入已存储的热点哈希表。
本步骤中,由于本实施例是针对热点哈希表已作为模版存储在内存的情况下的重复数据删除方法,因此,在初始化哈希表之前先读入已存储的热点哈希表。
步骤204、初始化哈希表。
本步骤中,初始化哈希表具体为:新建哈希表,即,定义针对每个中间文件的哈希表。
本实施例中,定义至少两个中间文件之中的一个中间文件的哈希表。具体地,将哈希表的头部信息、待存储文件大小、数据块大小、偏移量等信息存储在该新建的哈希表中。其中,哈希表的头部信息包括该文件的基本信息,如文件大小、文件名、文件格式等;偏移量表示数据块在磁盘上的具体位置信息。
步骤205、计算待处理文件中各数据块的数据指纹。
本步骤中,采用MD5算法或SHA1算法计算待处理文件中当前中间文件的各数据块的数据指纹。
步骤206、根据中间文件中各数据块的数据指纹,更新中间文件对应的哈希表。
本步骤中,将中间文件中各数据块的数据指纹与当前哈希表中存储的数据指纹进行比较,若中间文件中数据块的数据指纹与当前哈希表中存储的数据指纹不一致,则将该数据指纹存储在该哈希表中,以便最终将唯一数据块的数据指纹保存在哈希表中。
步骤207、根据待处理文件中数据指纹的重复出现次数,更新热点哈希表。
本步骤为可选步骤,其中,根据待处理文件中数据指纹的重复出现次数,更新热点哈希表,具体可以是仅基于待处理文件的数据指纹出现次数进行更新,也可以是基于历史文件和待处理文件中统计的数据指纹出现次数,对相同数据指纹的出现次数进行累计,以更新热点哈希表。
本实施例中,根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表包括:
在计算所述待处理文件中各数据块的数据指纹之后,或在计算每个数据块的数据指纹之后,统计各数据指纹的出现次数;
将出现次数达到设定门限值的数据指纹写入热点哈希表中。
具体地,上述待处理文件即为当前中间文件,设定门限值可根据经验设定。或者,也可以将各数据指纹依照出现的次数排序,然后提取出现次数高的数据指纹并写入热点哈希表中,以便更新作为模版存储在内存中的原热点哈希表。
步骤208、根据各数据块的数据指纹和热点哈希表中的数据指纹对待处理文件的数据块进行去重操作。
本步骤中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。其中,该至少一个文件可以指当前待处理的文件,也可以指获取到该热点哈希表的其它文件,例如,已经处理过的历史文件,或者是历史文件和当前待处理文件二者的结合。
具体地,根据各数据块的数据指纹和热点哈希表中的数据指纹对待处理文件的数据块进行去重操作包括:
根据所述中间文件每个数据块的数据指纹,在所述热点哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块;
当匹配不一致时,触发所述根据所述中间文件的哈希表对所述中间文件进行的去重操作。
一般的,当数据块生成的数据指纹相同时,要考虑碰撞问题,即不同数据块生成相同数据指纹的场景,因此,通过对数据块进行字节比较,最终确认数据块内容是否完全相同,即是否是重复数据块。具体地,当中间文件的一个数据块的数据指纹与热点哈希表的数据指纹匹配一致时,对该数据块和热点哈希表中该数据指纹的对应的数据块进行字节比较,若比较一致,则删除该数据块,若比较不一致,则对该数据块的数据指纹添加标识,使其区别于热点哈希表中的数据指纹,并将带有标识的数据指纹写入哈希表中。其中,对数据指纹添加标识可以对数据指纹增加一个字段或采用其他标识。本步骤中的去重操作指的是将数据指纹和热点哈希表的数据指纹匹配一致并且字节比较一致的数据块删除。
步骤209、根据中间文件的哈希表对中间文件进行去重操作,生成新的文件。
本步骤中,生成的新的文件即为备份文件。根据中间文件的哈希表对所述中间文件进行去重操作包括:
根据所述中间文件每个数据块的数据指纹,在所述中间文件的哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块。
一般的,当数据块生成的数据指纹相同时,要考虑碰撞问题,即不同数据块生成相同数据指纹的场景,因此,通过对数据块进行字节比较,最终确认数据块内容是否完全相同,即是否是重复数据块。具体地,当中间文件的一个数据块的数据指纹与中间文件的哈希表的数据指纹匹配一致时,对该数据块和哈希表中该数据指纹的对应的数据块进行字节比较,若比较一致,则删除该数据块,若比较不一致,则对该数据块的数据指纹添加标识,使其区别于哈希表中的数据指纹,并将带有标识的数据指纹写入哈希表中。其中,对数据指纹添加标识可以对数据指纹增加一个字段或采用其他标识。
此外,当中间文件的一个数据块的数据指纹与中间文件的哈希表的数据指纹匹配不一致时,将该数据块的数据指纹写入中间文件的哈希表中。
一般的,步骤205至步骤209循环进行,直至中间文件去重完成。
步骤210、在中间文件的去重处理完成后,清空中间文件对应的哈希表。
本步骤中,在当前中间文件去重处理完成后,清空当前中间文件对应的哈希表,然后从步骤204开始对两个中间文件中的另一个中间文件进行相同流程的去重处理。
本实施例的重复数据删除方法,通过采用热点哈希表增加了数据块内部及文件之间重复数据的对比,将热点哈希表和哈希表相结合进行去重操作,使得对待处理文件的去重操作可以考虑重复出现次数较高的数据指纹,特别是能够考虑在多个文件中重复出现的数据指纹,能够在存储过程中降低文件数据块的重复率,提高文件存储的空间利用率;此外,热点哈希表区别于一般的哈希表,并非存储唯一数据块的数据指纹,而是仅存储重复次数高的数据指纹,因此其数据量规模较小,可减小对内存的占用;通过对数据块的压缩处理进一步减少了存储空间;通过将重复出现次数达到设定门限值的数据指纹写入热点哈希表中,达到更新热点哈希表的目的;通过对具有相同数据指纹的数据块进行字节比较,实现准确判定重复数据块的目的。
图3为本发明重复数据删除方法实施例三的流程图,如图3所示,本实施例与图2所示实施例的区别在于热点哈希表未作为模版存储在内存中,而是需要在处理过程中同时生成热点哈希表,本实施例的方法可以包括:
步骤301、将待处理文件划分成至少两个数据块。
本步骤中,采用定长划分或滑块划分的方法将待处理文件划分成至少两个数据块。一般的,若系统规定的数据块过大,则会影响处理效率,优选的,在系统中规定每个数据块大小为64K。对于待处理文件,可以直接将该待处理文件划分成至少两个数据块;或者,将该待处理文件划分成至少两个数据块包括:将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块。
本实施例将以将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块的重复数据删除方法为例进行详细说明,直接将该待处理文件划分成至少两个数据块的重复数据删除方法与之类同,在此不再赘述。
步骤302、对各数据块进行压缩。
本步骤中,可以借助压缩工具对步骤301中划分的至少两个数据块进行压缩,下述步骤都在该压缩格式下进行,以便进一步减少存储空间。
步骤303、初始化热点哈希表。
本步骤中,由于本实施例是针对热点哈希表未作为模版存储在内存中,而是需要在处理过程中同时生成热点哈希表的情况,因此,初始化热点哈希表具体为:新建热点哈希表,即定义待处理文件的热点哈希表。
具体地,定义待处理文件的热点哈希表,即,将热点哈希表的头部信息、待存储文件大小、数据块大小、偏移量等信息存储在该新建的热点哈希表中。其中,热点哈希表的头部信息包括该文件的基本信息,如文件大小、文件名、文件格式等;偏移量表示数据块在磁盘上的具体位置信息。
步骤304、初始化哈希表。
本步骤中,初始化哈希表具体为:新建哈希表,即,定义针对每个中间文件的哈希表。
本实施例中,定义至少两个中间文件之中的一个中间文件的哈希表。具体地,将哈希表的头部信息、待存储文件大小、数据块大小、偏移量等信息存储在该新建的哈希表中。其中,哈希表的头部信息包括该文件的基本信息,如文件大小、文件名、文件格式等;偏移量表示数据块在磁盘上的具体位置信息。
步骤305、计算待处理文件中各数据块的数据指纹。
本步骤中,采用MD5算法或SHA1算法计算待处理文件中当前中间文件的各数据块的数据指纹。
步骤306、根据中间文件中各数据块的数据指纹,更新中间文件对应的哈希表。
本步骤中,将中间文件中各数据块的数据指纹与当前哈希表中存储的数据指纹进行比较,若中间文件中数据块的数据指纹与当前哈希表中存储的数据指纹不一致,则将该数据指纹存储在该哈希表中,以便最终将唯一数据块的数据指纹保存在哈希表中。
步骤307、根据待处理文件中数据指纹的重复出现次数,更新热点哈希表。
本步骤中,可有通过查询哈希表,将数据指纹所指向的重复数据块的个数大于阀值的数据指纹写入热点哈希表中;或者在计算待处理文件中各数据块的数据指纹之后,或在计算每个数据块的数据指纹之后,统计各数据指纹的出现次数;将出现次数达到设定门限值的数据指纹写入热点哈希表中。
具体地,通过查询哈希表获得热点哈希表具体为:根据经验确定阀值,然后,若哈希表中的某个数据指纹指向重复数据块的个数大于该阀值,则系统将该数据指纹写入热点哈希表中,则热点哈希表就存入了热点数据块所对应的数据指纹,该热点哈希表存储在内存中,可应用在后续文件的重复数据删除操作中。此外,也可通过数据指纹出现次数获得热点哈希表。并将该热点哈希表作为模版存储在内存中。
步骤308、根据各数据块的数据指纹和热点哈希表中的数据指纹对待处理文件的数据块进行去重操作。
本步骤中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。其中,该至少一个文件指当前待处理的文件。
具体地,根据各数据块的数据指纹和热点哈希表中的数据指纹对待处理文件的数据块进行去重操作包括:
根据所述中间文件每个数据块的数据指纹,在所述热点哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块;
当匹配不一致时,触发所述根据所述中间文件的哈希表对所述中间文件进行的去重操作。
一般的,当数据块生成的数据指纹相同时,要考虑碰撞问题,即不同数据块生成相同数据指纹的场景,因此,通过对数据块进行字节比较,最终确认数据块内容是否完全相同,即是否是重复数据块。具体地,当中间文件的一个数据块的数据指纹与热点哈希表的数据指纹匹配一致时,对该数据块和热点哈希表中该数据指纹的对应的数据块进行字节比较,若比较一致,则删除该数据块,若比较不一致,则对该数据块的数据指纹添加标识,使其区别于热点哈希表中的数据指纹,并将带有标识的数据指纹写入哈希表中。其中,对数据指纹添加标识可以对数据指纹增加一个字段或采用其他标识。本步骤中的去重操作指的是将数据指纹和热点哈希表的数据指纹匹配一致并且字节比较一致的数据块删除。
步骤309、根据中间文件的哈希表对中间文件进行去重操作,生成新的文件。
本步骤中,生成的新的文件即为备份文件。根据中间文件的哈希表对所述中间文件进行去重操作包括:
根据所述中间文件每个数据块的数据指纹,在所述中间文件的哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块。
一般的,当数据块生成的数据指纹相同时,要考虑碰撞问题,即不同数据块生成相同数据指纹的场景,因此,通过对数据块进行字节比较,最终确认数据块内容是否完全相同,即是否是重复数据块。具体地,当中间文件的一个数据块的数据指纹与中间文件的哈希表的数据指纹匹配一致时,对该数据块和哈希表中该数据指纹的对应的数据块进行字节比较,若比较一致,则删除该数据块,若比较不一致,则对该数据块的数据指纹添加标识,使其区别于哈希表中的数据指纹,并将带有标识的数据指纹写入哈希表中。其中,对数据指纹添加标识可以对数据指纹增加一个字段或采用其他标识。
此外,当中间文件的一个数据块的数据指纹与中间文件的哈希表的数据指纹匹配不一致时,将该数据块的数据指纹写入中间文件的哈希表中。
一般的,步骤305至步骤309循环进行,直至中间文件去重完成。
步骤310、在中间文件的去重处理完成后,清空中间文件对应的哈希表。
本步骤中,在当前中间文件去重处理完成后,清空当前中间文件对应的哈希表,此时,对于两个中间文件中的另一个中间文件进行去重处理时,相当于本发明重复数据删除方法实施例二中针对热点哈希表已作为模版存储在内存的情况下的重复数据删除方法,因此,可采用实施例二中所述流程进行去重处理,在此不再赘述。
本实施例的重复数据删除方法,在进行重复数据删除的同时生成热点哈希表,然后通过采用热点哈希表增加了数据块内部及文件之间重复数据的对比,将热点哈希表和哈希表相结合进行去重操作,使得对待处理文件的去重操作可以考虑重复出现次数较高的数据指纹,特别是能够考虑在多个文件中重复出现的数据指纹,能够在存储过程中降低文件数据块的重复率,提高文件存储的空间利用率;此外,热点哈希表区别于一般的哈希表,并非存储唯一数据块的数据指纹,而是仅存储重复次数高的数据指纹,因此其数据量规模较小,可减小对内存的占用;通过对数据块的压缩处理进一步减少了存储空间;通过将数据指纹所指向的重复数据块的个数大于阀值的数据指纹或重复出现次数达到设定门限值的数据指纹写入热点哈希表中,达到更新热点哈希表的目的;通过对具有相同数据指纹的数据块进行字节比较,实现准确判定重复数据块的目的。
相应的,利用本发明实施例的重复数据删除技术备份的数据,在恢复数据时,可以根据恢复文件的特性,提取备份的热点数据,恢复时将热点数据存入内存及缓存中,提高恢复数据的效率。
图4为本发明重复数据删除装置实施例一的结构示意图,如图4所示,本实施例的装置可以包括:数据块划分模块11、计算模块12和第一去重模块13。其中,数据块划分模块11,用于将待处理文件划分成至少两个数据块;计算模块12用于计算所述待处理文件中各数据块的数据指纹;第一去重模块13,用于根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作,其中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5为本发明重复数据删除装置实施例二的结构示意图,如图5所示,本实施例的装置在图4所示装置结构的基础上,进一步地,还可以包括:热点哈希表更新模块14、压缩模块15、更新模块16、第二去重模块17和清空模块18。其中,数据块划分模块11具体用于将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块;热点哈希表更新模块14用于在计算所述待处理文件中各数据块的数据指纹之后,根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表;压缩模块15用于在计算所述待处理文件中各数据块的数据指纹之前,对各数据块进行压缩;更新模块16用于在计算所述待处理文件中各数据块的数据指纹之后,根据每个所述中间文件中各数据块的数据指纹,更新所述中间文件对应的哈希表;第二去重模块17用于根据所述中间文件的哈希表对所述中间文件进行去重操作;清空模块18用于在所述中间文件的去重处理完成后,清空所述中间文件对应的哈希表。
本实施例的装置,可以用于执行图2或图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本发明重复数据删除装置实施例三的结构示意图,如图6所示,本实施例的装置在图5所示装置结构的基础上,进一步地,热点哈希表更新模块14可以包括:统计单元141和写入单元142。其中,统计单元141用于在计算所述待处理文件中各数据块的数据指纹之后,或在计算每个数据块的数据指纹之后,统计各数据指纹的出现次数;写入单元142,用于将出现次数达到设定门限值的数据指纹写入热点哈希表中。
第一去重模块13可以包括:第一匹配单元131、第一删除单元132和触发单元133。其中,第一匹配单元131,用于在根据所述中间文件的哈希表对所述中间文件进行去重操作之前,根据所述中间文件每个数据块的数据指纹,在所述热点哈希表的数据指纹中进行匹配;第一删除单元132,用于当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块;触发单元133,用于当匹配不一致时,触发所述第二去重模块根据所述中间文件的哈希表对所述中间文件进行的去重操作。
第二去重模块17可以包括:第二匹配单元171和比较删除单元172。其中,第二匹配单元171,用于根据所述中间文件每个数据块的数据指纹,在所述中间文件的哈希表的数据指纹中进行匹配;比较删除单元172,用于当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块。
本实施例的装置,可以用于执行图2或图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的重复数据删除方法和装置,可以应用于备份批量文件中,通过采用热点哈希表增加了数据块内部及文件之间重复数据的对比,提高了文件的空间节省率。同时本发明实施例也适用于前端重复数据删除及后端重复数据删除,本地数据备份及远程数据备份,以及虚拟化环境中。在虚拟化环境中,对批量虚拟机进行全量和增量备份。例如,对于桌面云系统,由于它所管理的虚拟机的操作系统及应用软件有很多相同文件,应用热点哈希表能快速并有效的对批量虚拟机进行全量备份,并且会大大提高文件的空间节省率。
图7为本发明重复数据删除装置实施例四的加密设备的装置结构示意图。本发明具体实施例并不对所述网络设备的具体实现做限定。如图7所示,本实施例的加密设备包括处理器(processor)2101、通信接口(CommunicationsInterface)2102、存储器(memory)2103以及总线2104。
其中,处理器2101、通信接口2102、存储器2103通过总线2104完成相互间的通信;通信接口2102,用于与其他设备进行通信;处理器2101,用于执行程序A。
具体地,程序A可以包括程序代码,所述程序代码包括计算机操作指令。
处理器2101可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specifc Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器2103,用于存放程序A。存储器2103可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序A具体可以包括:
将待处理文件划分成至少两个数据块;
计算所述待处理文件中各数据块的数据指纹;
根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作,其中,所述热点哈希表中的数据指纹为在至少一个文件中重复出现次数达到设定门限值的数据指纹。
上述程序A,优选的是在计算所述待处理文件中各数据块的数据指纹之后,还包括:根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表。
上述程序A,优选的是根据所述待处理文件中数据指纹重复出现的次数,更新所述热点哈希表包括:
在计算所述待处理文件中各数据块的数据指纹之后,或在计算每个数据块的数据指纹之后,统计各数据指纹的出现次数;
将出现次数达到设定门限值的数据指纹写入热点哈希表中。
上述程序A,优选的是将待处理文件划分成至少两个数据块包括:将待处理文件划分成至少两个中间文件,将每个中间文件划分成至少两个数据块;
则计算所述待处理文件中各数据块的数据指纹之后,还包括:
根据每个所述中间文件中各数据块的数据指纹,更新所述中间文件对应的哈希表;
根据所述中间文件的哈希表对所述中间文件进行去重操作;
在所述中间文件的去重处理完成后,清空所述中间文件对应的哈希表。
上述程序A,优选的是根据各数据块的数据指纹和热点哈希表中的数据指纹对所述待处理文件的数据块进行去重操作包括:
在根据所述中间文件的哈希表对所述中间文件进行去重操作之前,根据所述中间文件每个数据块的数据指纹,在所述热点哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块;
当匹配不一致时,触发所述根据所述中间文件的哈希表对所述中间文件进行的去重操作。
上述程序A,优选的是根据所述中间文件的哈希表对所述中间文件进行去重操作包括:
根据所述中间文件每个数据块的数据指纹,在所述中间文件的哈希表的数据指纹中进行匹配;
当匹配一致时,对所述数据块与匹配一致数据指纹所对应的数据块进行字节比较,若比较一致,则删除所述数据块。
上述程序A,优选的是计算所述待处理文件中各数据块的数据指纹之前,还包括:对各数据块进行压缩。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。