本发明涉及数据处理技术领域,更具体地说,涉及一种云存储系统中数据去重方法及系统。
背景技术:
随着互联网和云计算的兴起,产生的巨大数据对存储系统的容量和性能有了更高的要求。无论企业还是个人如今都会用到云存储系统,特别是使用云存储系统共享数据或备份数据。而当我们上传大体积的文件或者备份数据时,经常会遇到上传时间过长的情况,而云存储系统也会出现大量数据冗余而影响系统性能。
目前,虽然有数据压缩技术可以减少数据的体积,增加传输效率,但是并不能有效减少存储系统中的数据冗余,特别是备份数据时会产生大量数据冗余。而现有的数据去重技术多为离线去重技术,这种技术必须将数据全部上传到云端后才能删除重复的数据,应用在云存储系统中,它并不能加快数据传输效率,并且需占用更大的空间作为缓冲区。因此,如何有效的对云存储系统中的数据进行去重是一项亟待解决的问题。
技术实现要素:
有鉴于此,本发明的目的在于提供一种云存储系统中数据去重方法,能够有效的在线对云存储系统中的数据进行去重,大大提高客户端向云端上传或备份数据的速度。
为实现上述目的,本发明提供如下技术方案:
一种云存储系统中数据去重方法,包括:
获取目标文件,所述目标文件为待上传文件;
生成所述目标文件的待上传文件数字指纹库;
将所述待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库;
基于所述去重后的待上传数字指纹库上传去重后的文件至云端文件库。
优选地,所述基于所述去重后的待上传数字指纹库上传去重后的文件至云端文件库后还包括:
基于所述云端文件库生成云端文件数字指纹库;
存储所述云端文件数字指纹库。
优选地,所述生成所述目标文件的待上传文件数字指纹库包括:
基于哈希函数计算所述目标文件内容的哈希值;
基于所述哈希值生成所述目标文件的待上传文件数字指纹库。
优选地,所述将所述待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库包括:
判断所述待上传文件数值指纹库与所述云端已存储的文件数字指纹库是否存在相同的数字指纹的文件;
当所述待上传文件数值指纹库与所述云端已存储的文件数字指纹库存在相同的数字指纹的文件时,删除具有相同的数字指纹的文件,生成去重后的待上传数字指纹库。
一种云存储系统中数据去重系统,包括:
获取模块,用于获取目标文件,所述目标文件为待上传文件;
第一生成模块,用于生成所述目标文件的待上传文件数字指纹库;
比较模块,用于将所述待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库;
上传模块,用于基于所述去重后的待上传数字指纹库上传去重后的文件至云端文件库。
优选地,所述系统还包括:
第二生成模块,用于基于所述云端文件库生成云端文件数字指纹库;
存储模块,用于存储所述云端文件数字指纹库。
优选地,所述第一生成模块具体用于:
基于哈希函数计算所述目标文件内容的哈希值;
基于所述哈希值生成所述目标文件的待上传文件数字指纹库。
优选地,所述比较模块具体用于:
判断所述待上传文件数值指纹库与所述云端已存储的文件数字指纹库是否存在相同的数字指纹的文件;
当所述待上传文件数值指纹库与所述云端已存储的文件数字指纹库存在相同的数字指纹的文件时,删除具有相同的数字指纹的文件,生成去重后的待上传数字指纹库。
由上述技术方案可知,本实施例提供了一种云存储系统中数据去重方法,当在向云存储系统中上传或备份数据时,首先获取目标文件,即获取待上传文件,然后生成目标文件的待上传文件数字指纹库,然后将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库,根据去重后的待上传数字指纹库上传去重后的文件至云端文件库,能够有效的在线对云存储系统中的数据进行去重,大大提高客户端向云端上传或备份数据的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明公开的一种云存储系统中数据去重方法实施例1的方法流程图;
图2为本发明公开的一种云存储系统中数据去重方法实施例2的方法流程图;
图3为本发明公开的一种云存储系统中数据去重方法实施例3的方法流程图;
图4为本发明公开的一种云存储系统中数据去重系统实施例1的结构示意图;
图5为本发明公开的一种云存储系统中数据去重系统实施例2的结构示意图;
图6为本发明公开的一种云存储系统中数据去重系统实施例3的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了更加特定地强调实施的独立性,本说明书涉及许多模块或单元。举例而言,模块或单元可由硬件电路实现,该硬件电路包括特制vlsi电路或门阵列,比如逻辑芯片、晶体管,或其它组件。模块或单元也可在可编程的硬设备中实现,比如场效可编程门阵列、可编程阵列逻辑、可编程逻辑设备等等。
模块或单元也可在藉由各种形式的处理器所执行的软件中实现。比如说,一可执行码模块可包括一个或多个实体的或逻辑的计算机指令区块,该区块可能形成为,比如说,对象、程序或函数。然而,鉴别模块或单元的可执行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所组成,当逻辑上组合在一起时,形成模块或单元且达到该模块或单元所要求的目的。
实际上,可执行码模块或单元可以是一单一指令或多个指令,甚至可以分布在位于不同的程序的数个不同的码区段,并且横跨数个存储设备。同样地,操作数据可被辨识及显示于此模块或单元中,并且可以以任何合适的形式实施且在任何合适的数据结构形式内组织。操作数据可以集合成单一数据集,或可分布在具有不同的存储设备的不同的位置,且至少部分地只以电子信号方式存在于一系统或网络。
本说明书所提及的“实施例”或类似用语表示与实施例有关的特性、结构或特征,包括在本发明的至少一实施例中。因此,本说明书所出现的用语“在一实施例中”、“在实施例中”以及类似用语可能但不必然都指向相同实施例。
再者,本发明所述特性、结构或特征可以以任何方式结合在一个或多个实施例中。以下说明将提供许多特定的细节,比如编程序、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等例子,以提供对本发明实施例的了解。然而相关领域的普通技术人员将看出本发明,即使没有利用其中一个或多个特定细节,或利用其它方法、组件、材料等亦可实施。另一方面,为避免混淆本发明,公知的结构、材料或操作并没有详细描述。
如图1所示,为本发明公开的一种云存储系统中数据去重方法实施例1的流程图,本方法包括以下步骤:
s101、获取目标文件,目标文件为待上传文件;
当需要对待上传或备份的数据进行去重时,首先获取目标文件,所述的目标文件为待上传或备份至云存储系统中的文件。
s102、生成目标文件的待上传文件数字指纹库;
当获取到目标文件后,进一步生成与目标文件相匹配的待上传文件数字指纹库,需要说明的是,不同的文件对应不同的数字指纹。
s103、将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库;
当生成目标文件的待上传文件数字指纹库后,进一步将待上传文件数字指纹库与云存储系统中已经存储的文件数字指纹库进行比对,去掉重复的文件,生成去重后的待上传数字指纹库。
s104、基于去重后的待上传数字指纹库上传去重后的文件至云端文件库。
当生成去重后的待上传数字指纹库后,进一步根据去重后的待上传数字指纹库上传去重后的文件至云端文件库。
综上所述,在上述实施例中,当在向云存储系统中上传或备份数据时,首先获取目标文件,即获取待上传文件,然后生成目标文件的待上传文件数字指纹库,然后将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库,根据去重后的待上传数字指纹库上传去重后的文件至云端文件库,能够有效的在线对云存储系统中的数据进行去重,大大提高客户端向云端上传或备份数据的速度。
如图2所示,为本发明公开的一种云存储系统中数据去重方法实施例2的流程图,本方法包括以下步骤:
s201、获取目标文件,目标文件为待上传文件;
当需要对待上传或备份的数据进行去重时,首先获取目标文件,所述的目标文件为待上传或备份至云存储系统中的文件。
s202、生成目标文件的待上传文件数字指纹库;
当获取到目标文件后,进一步生成与目标文件相匹配的待上传文件数字指纹库,需要说明的是,不同的文件对应不同的数字指纹。
s203、将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库;
当生成目标文件的待上传文件数字指纹库后,进一步将待上传文件数字指纹库与云存储系统中已经存储的文件数字指纹库进行比对,去掉重复的文件,生成去重后的待上传数字指纹库。
s204、基于去重后的待上传数字指纹库上传去重后的文件至云端文件库;
当生成去重后的待上传数字指纹库后,进一步根据去重后的待上传数字指纹库上传去重后的文件至云端文件库。
s205、基于云端文件库生成云端文件数字指纹库;
当将去重后的文件上传至云端文件库后,将上传的去重后的文件生成云端文件数字指纹库,生成的云端文件数字指纹库可以作为下次的比对数据。
s206、存储云端文件数字指纹库。
然后将生成的云端文件数字指纹库存车至云存储系统。
如图3所示,为本发明公开的一种云存储系统中数据去重方法实施例3的流程图,本方法包括以下步骤:
s301、获取目标文件,目标文件为待上传文件;
当需要对待上传或备份的数据进行去重时,首先获取目标文件,所述的目标文件为待上传或备份至云存储系统中的文件。
s302、基于哈希函数计算目标文件内容的哈希值;
当获取到目标文件后,根据好像函数计算出目标文件内容的哈希值,哈希算法就是把任意长度的输入通过哈希算法变换成固定长度的输出,该输出就是哈希值。哈希值在存储系统中可以唯一的表征特定的数据实体,成为内容地址或数字指纹
s303、基于哈希值生成目标文件的待上传文件数字指纹库;
数值指纹库即哈希表,是根据关键码值(数字指纹)而直接进行访问的数据结构。也就是说,它通过把数字指纹值映射到表中一个位置来访问对应的文件,以加快查找的速度。
s304、判断待上传文件数值指纹库与云端已存储的文件数字指纹库是否存在相同的数字指纹的文件;
s305、当待上传文件数值指纹库与云端已存储的文件数字指纹库存在相同的数字指纹的文件时,删除具有相同的数字指纹的文件,生成去重后的待上传数字指纹库;
当生成目标文件的待上传文件数字指纹库后,进一步将待上传文件数字指纹库与云存储系统中已经存储的文件数字指纹库进行比对,去掉重复的文件,生成去重后的待上传数字指纹库。
s306、基于去重后的待上传数字指纹库上传去重后的文件至云端文件库;
当生成去重后的待上传数字指纹库后,进一步根据去重后的待上传数字指纹库上传去重后的文件至云端文件库。
s307、基于云端文件库生成云端文件数字指纹库;
当将去重后的文件上传至云端文件库后,将上传的去重后的文件生成云端文件数字指纹库,生成的云端文件数字指纹库可以作为下次的比对数据。
s308、存储云端文件数字指纹库。
然后将生成的云端文件数字指纹库存车至云存储系统。
综上所述,本发明能够节省存储空间,通过重复数据删除,可以大大降低需要的存储介质数量,进而降低成本。能够提升写入性能,磁盘的写入性能是有限的,通常顺序写入在100mb/s左右,如果在写入数据的时候就进行数据去重,可以避免一部分的数据写入磁盘,从而提升写入性能。能够在线去重,仅将新增的数据传输到存储系统,可以减少网络上的数据传输量,从而节省网络带宽。
如图4所示,为本发明公开的一种云存储系统中数据去重系统实施例1的结构示意图,本系统包括:
获取模块401,用于获取目标文件,目标文件为待上传文件;
当需要对待上传或备份的数据进行去重时,首先获取目标文件,所述的目标文件为待上传或备份至云存储系统中的文件。
第一生成模块402,用于生成目标文件的待上传文件数字指纹库;
当获取到目标文件后,进一步生成与目标文件相匹配的待上传文件数字指纹库,需要说明的是,不同的文件对应不同的数字指纹。
比较模块403,用于将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库;
当生成目标文件的待上传文件数字指纹库后,进一步将待上传文件数字指纹库与云存储系统中已经存储的文件数字指纹库进行比对,去掉重复的文件,生成去重后的待上传数字指纹库。
上传模块404,用于基于去重后的待上传数字指纹库上传去重后的文件至云端文件库。
当生成去重后的待上传数字指纹库后,进一步根据去重后的待上传数字指纹库上传去重后的文件至云端文件库。
综上所述,在上述实施例中,当在向云存储系统中上传或备份数据时,首先获取目标文件,即获取待上传文件,然后生成目标文件的待上传文件数字指纹库,然后将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库,根据去重后的待上传数字指纹库上传去重后的文件至云端文件库,能够有效的在线对云存储系统中的数据进行去重,大大提高客户端向云端上传或备份数据的速度。
如图5所示,为本发明公开的一种云存储系统中数据去重系统实施例2的结构示意图,本系统包括:
获取模块501,用于获取目标文件,目标文件为待上传文件;
当需要对待上传或备份的数据进行去重时,首先获取目标文件,所述的目标文件为待上传或备份至云存储系统中的文件。
第一生成模块502,用于生成目标文件的待上传文件数字指纹库;
当获取到目标文件后,进一步生成与目标文件相匹配的待上传文件数字指纹库,需要说明的是,不同的文件对应不同的数字指纹。
比较模块503,用于将待上传文件数字指纹库与云端已存储的文件数字指纹库进行比对,生成去重后的待上传数字指纹库;
当生成目标文件的待上传文件数字指纹库后,进一步将待上传文件数字指纹库与云存储系统中已经存储的文件数字指纹库进行比对,去掉重复的文件,生成去重后的待上传数字指纹库。
上传模块504,用于基于去重后的待上传数字指纹库上传去重后的文件至云端文件库;
当生成去重后的待上传数字指纹库后,进一步根据去重后的待上传数字指纹库上传去重后的文件至云端文件库。
第二生成模块505,用于基于云端文件库生成云端文件数字指纹库;
当将去重后的文件上传至云端文件库后,将上传的去重后的文件生成云端文件数字指纹库,生成的云端文件数字指纹库可以作为下次的比对数据。
存储模块506,用于存储云端文件数字指纹库。
然后将生成的云端文件数字指纹库存车至云存储系统。
如图6所示,为本发明公开的一种云存储系统中数据去重系统实施例3的结构示意图,本系统包括:
获取模块601,用于获取目标文件,目标文件为待上传文件;
当需要对待上传或备份的数据进行去重时,首先获取目标文件,所述的目标文件为待上传或备份至云存储系统中的文件。
第一生成模块602,用于基于哈希函数计算目标文件内容的哈希值,基于哈希值生成目标文件的待上传文件数字指纹库;
当获取到目标文件后,根据好像函数计算出目标文件内容的哈希值,哈希算法就是把任意长度的输入通过哈希算法变换成固定长度的输出,该输出就是哈希值。哈希值在存储系统中可以唯一的表征特定的数据实体,成为内容地址或数字指纹
数值指纹库即哈希表,是根据关键码值(数字指纹)而直接进行访问的数据结构。也就是说,它通过把数字指纹值映射到表中一个位置来访问对应的文件,以加快查找的速度。
比较模块603,用于判断待上传文件数值指纹库与云端已存储的文件数字指纹库是否存在相同的数字指纹的文件;当待上传文件数值指纹库与云端已存储的文件数字指纹库存在相同的数字指纹的文件时,删除具有相同的数字指纹的文件,生成去重后的待上传数字指纹库;
当生成目标文件的待上传文件数字指纹库后,进一步将待上传文件数字指纹库与云存储系统中已经存储的文件数字指纹库进行比对,去掉重复的文件,生成去重后的待上传数字指纹库。
上传模块604,用于基于去重后的待上传数字指纹库上传去重后的文件至云端文件库;
当生成去重后的待上传数字指纹库后,进一步根据去重后的待上传数字指纹库上传去重后的文件至云端文件库。
第二生成模块605,用于基于云端文件库生成云端文件数字指纹库;
当将去重后的文件上传至云端文件库后,将上传的去重后的文件生成云端文件数字指纹库,生成的云端文件数字指纹库可以作为下次的比对数据。
存储模块606,用于存储云端文件数字指纹库。
然后将生成的云端文件数字指纹库存车至云存储系统。
综上所述,本发明能够节省存储空间,通过重复数据删除,可以大大降低需要的存储介质数量,进而降低成本。能够提升写入性能,磁盘的写入性能是有限的,通常顺序写入在100mb/s左右,如果在写入数据的时候就进行数据去重,可以避免一部分的数据写入磁盘,从而提升写入性能。能够在线去重,仅将新增的数据传输到存储系统,可以减少网络上的数据传输量,从而节省网络带宽。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。