具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图一,是本发明一个实施方式所公开的数据处理方法;
在本发明实施例中,客户端已完成了文件的首次备份,经过一段时间以后,原文件发生变化,即需要将变化后的文件重新备份到服务器,完成服务器对元数据的更新;
步骤S401:计算待备份文件的各个数据块的指纹数据,以及待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据;
具体地,指纹数据是指采用SHA-1,MD-5等类似的算法将待备份的文件的各个数据块各自生成一个32位或者128位哈希值与数据形成一一对应关系,由此生成的指纹数据是该待备份文件数据的唯一标识,需要特别指出的是,除了使用以上列举的算法外,本实施例以及后续的其他实施例中,还可以根据具体需要使用其他算法生成指纹数据,只要客户端与服务器的算法一致或者具有对应性,且通过算法产生的数据能够唯一标识待备份文件数据块即可;
在本发明实施例中将待备份文件按照给定长度划分为数据块,数据块是数据的物理记录,这里的数据块可以理解为一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位;
这里的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。
步骤S402:将待备份文件的各个数据块的指纹数据,以及待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据发送给服务器,用于与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对;
具体地,客户端将计算得出的各个数据块的指纹数据,及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据发送给服务器,用于服务器依次将其与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行对比;
这里的服务器保存的文件的各个数据块的指纹数据,是指将首次备份时客户端发送给服务器的元数据按照给定的长度进行划分的数据块的指纹数据;
这里的保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将服务器之前保存的文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。
步骤S403:根据服务器发送的比对结果,将指纹数据不一致的数据块及指针发送给服务器。
具体地,对于比对结果相同的数据块,服务器只需指示客户端将该数据块的指针发送给服务器即可,对于比对结果不同的数据块,服务器需指示客户端发送该数据块。
需要说明的是,上述实施例可以是对一个文件进行备份,也可以是对由多个文件组成的一个文件集进行备份,具体的备份方法类似,不再赘述。
本发明实施例的有益效果在于,当客户端待备份文件发生变化需要再次备份时,将该待备份文件的数据块的指纹数据,以及待备份文件的数据块的地址的偏移量递增后的数据块的指纹数据与服务器端保存的文件的数据块的指纹数据,以及文件的数据块的地址的偏移量递增的数据块的指纹数据进行比对,然后将指纹数据发生变化的数据块所对应的数据发送给服务器。因此可以在保证服务器端备份文件唯一存储的前提下,有效地减少服务器端数据存储,进一步提高重复数据删除率。
参见图二,是本发明一个实施方式所公开的数据处理方法,
在本发明实施例中,客户端已完成了文件的首次备份,经过一段时间以后,原文件发生变化,即需要将变化后的文件备份到服务器,完成服务器对元数据的更新,与实施例一不同的是,实施例一是从客户端的角度描述的,而本实施例是从服务器的角度来描述的;
步骤S501:接收客户端发送的待备份文件的各个数据块的指纹数据,以及所述待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据;
具体地,指纹数据是指采用SHA-1,MD-5等类似的算法将待备份的待备份文件的各个数据块各自生成一个32位或者128位哈希值与数据形成一一对应关系,由此生成的指纹数据是该待备份文件数据的唯一标识;
在本发明实施例中将待备份文件按照给定长度划分为数据块,数据块是数据的物理记录,这里的数据块可以理解为一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位;
这里的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。
步骤S502:将待备份文件的各个数据块的指纹数据,以及待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据与保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对;
这里的服务器保存的文件的各个数据块的指纹数据,是指将首次备份时客户端发送给服务器的元数据按照给定的长度进行划分的数据块的指纹数据;
这里的保存的文件的各个数据块的偏移量递增后的数据块的指纹数据,是指将保存的文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据;
需要说明的是,服务器比对指纹数据可以采用rsync滚动校验算法,依次将客户端发送的数据块的指纹数据,以及地址的偏移量加1的指纹数据与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对,同时需要指出的是,本步骤的目的在于进行指纹数据的对比,为了方便说明而以rsync算法进行举例,但显然的,除了rsync算法外,本领域技术人员可以根据实际情况选用其他算法;
例如:以定长为2的数据块为例;第一次,将客户端发送的第一个数据块的指纹数据与服务器保存的文件的第一个数据块的指纹数据进行比对,如果不相同,则将其与服务器保存的文件的第二个数据块的指纹数据进行比对,如果不相同,则依次比对,直至服务器保存的文件的最后一个数据块的指纹数据,如果仍然不相同,则将其与服务器保存的文件的第一个数据块的地址的偏移量加1的指纹数据进行比对,如果不相同,则将其与服务器保存的文件的第二个数据块的地址的偏移量加1的指纹数据进行比对,如果仍然找不到匹配的指纹数据,则可以通知客户端发送该数据块;第二次,将客户端发送的第一个数据块的地址的偏移量加1的数据块的指纹数据按照第一次的步骤,依次与服务器保存的文件的数据块,及偏移量加1的数据块进行比对。
需要说明的是,在本发明实施例中除了可以将文件的数据按照长度为2来划分数据块以外,还可以按照长度为3、定长为4等来划分数据块;
若以长度为3来划分数据块,则当将客户端发送的数据块的指纹数据与服务器端的各个数据块的指纹数据进行比较时,不但要依次比较数据块的地址的偏移量加1的数据块的指纹数据,还需要依次比较数据块的地址的偏移量加2的数据块的指纹数据;
若以长度为4来划分数据块,则当将客户端发送的数据块的指纹数据与服务器端的各个数据块的指纹数据进行比较时,不但要依次比较数据块的地址的偏移量加1的数据块的指纹数据,还需要依次比较数据块的地址的偏移量加2的数据块的指纹数据,以及数据块的地址的偏移量加3的数据块的指纹数据;
以此类推,若以长度为N来划分数据块,N为大于2的自然数,待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是该待备份文件的各个数据块的地址的偏移量从加1,依次递增至加N-1后的数据块的指纹数据。
同样地,客户端的各个数据块的地址的偏移量递增的数据块,也是从偏移量加1递增至偏移量加N-1的数据块。
步骤S503:将比对结果发送给客户端,并接收客户端发送的指纹数据不一致的数据块及指针。
在步骤S502中,服务器通过比对得出发生变化的数据块,由此可以将比对结果发送给客户端,指示客户端将指纹数据不一致的数据块及指针发送给服务器。
本发明实施例的有益效果在于,当客户端待备份文件发生变化需要再次备份时,将该待备份文件的数据块的指纹数据,以及待备份文件的数据块的地址的偏移量递增后的数据块的指纹数据与服务器端保存的文件的数据块的指纹数据,以及文件的数据块的地址的偏移量递增的数据块的指纹数据进行比对,然后将指纹数据发生变化的数据块所对应的数据发送给服务器。因此可以在保证服务器端备份文件唯一存储的前提下,有效地减少服务器端数据存储,进一步提高重复数据删除率。
参见图三,是本发明另一个实施方式所公开的数据处理方法;
在本发明实施例中,客户端已完成了文件的首次备份,文件首次备份是将客户端的文件完整地备份到服务器,服务器将该文件作为元数据保存。
在经过一段时间后,该文件可能发生变化,即需要将变化后的文件备份到服务器,完成服务器对元数据的更新。下面将具体对文件可能发生变化之后的备份方法进行描述:
步骤S101:计算待备份文件的指纹数据;
具体地,指纹数据是指采用SHA-1,MD-5等类似的算法将待备份的文件生成一个32位或者128位哈希值与数据形成一一对应关系,由此生成的指纹数据是该待备份文件数据的唯一标识。
步骤S102:将该待备份文件的指纹数据发送给服务器,用于将该待备份文件的指纹数据与服务器保存的文件的指纹数据进行比对;
具体地,客户端将在步骤S101计算获得的待备份文件的指纹数据发送给服务器,服务器在文件的首次备份时已通过计算获得该文件的指纹数据,在接收到客户端发送的指纹数据后与其在先保存的指纹数据进行比较,若指纹数据相同,则说明文件没有发生变化,若指纹数据不同,则说明文件已经发生变化。
步骤S102和步骤S103的技术效果在于,在经过一段时间t以后,如果不确定原文件是否发生变化,可以将当前文件的指纹数据与原文件的指纹数据进行比对,以确定原文件是否发生变化,若没有变化,则客户端将该文件的指针发送给服务器即可,不必进行后面的操作,然而在本发明实施例中重点讨论的是原文件发生变化的情况。
步骤S103:接收服务器发送的比对结果,当比对结果为不相同时,计算该待备份文件的各个数据块的指纹数据,以及各个数据块的地址的偏移量递增的数据块的指纹数据;
具体地,在本发明实施例中将待备份文件按照给定长度划分为数据块,数据块是数据的物理记录,这里的数据块可以理解为一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位;
计算各个数据块的指纹数据的方法与步骤S101中计算待备份文件的指纹数据的方法一致,这里不在赘述;
另外,当比对结果相同时,说明待备份文件与服务器中保存的元数据相比没有变化,则将该备份文件的指针发送给服务器即可。
步骤S104:将各个数据块的指纹数据及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据发送给服务器,用于与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对;
具体地,客户端将计算得出的各个数据块的指纹数据,及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据发送给服务器,用于服务器依次将其与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行对比;
这里的服务器保存的文件的各个数据块的指纹数据,是指将首次备份时客户端发送给服务器的元数据按照给定的长度进行划分的数据块的指纹数据;
这里的保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将保存的文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。
步骤S105:根据服务器发送的比对结果,将指纹数据不一致的数据块及指针发送给服务器;
具体地,对于比对结果相同的数据块,服务器只需指示客户端将该数据块的指针发送给服务器即可,对于比对结果不同的数据,服务器需指示客户端发送该数据。
需要说明的是,上述实施例可以是对一个文件进行备份,也可以是对一个文件集中的多个文件进行备份,具体的备份方法类似,不再赘述。
本发明实施例的有益效果在于,当客户端待备份文件发生变化需要再次备份时,将该待备份文件的数据块的指纹数据,以及待备份文件的数据块的地址的偏移量递增后的数据块的指纹数据与服务器端保存的文件的数据块的指纹数据,以及文件的数据块的地址的偏移量递增的数据块的数据块进行比对,然后将指纹数据发生变化的数据块所对应的数据发送给服务器。因此可以在保证服务器端备份文件唯一存储的前提下,有效地减少服务器端数据存储,进一步提高重复数据删除率。
参见图四,是本发明另一个实施方式所公开的数据处理方法;
在本发明实施例中,客户端已完成了文件的首次备份,文件首次备份是将客户端的文件完整地备份到服务器,服务器将该文件作为元数据保存。
在经过一段时间后,该文件可能发生变化,即需要将变化后的文件备份到服务器,完成服务器对元数据的更新。下面将具体对文件可能发生变化之后的备份方法进行描述,与实施例一不同之处在于,实施例一是从客户端的角度描述的,而本实施例是从服务器的角度描述的;
步骤S201:接收客户端发送的待备份文件的指纹数据;
具体地,指纹数据是指采用SHA-1,MD-5等类似的算法将待备份的数据生成一个32位或者128位哈希值与数据形成一一对应关系,由此生成的指纹数据是该待备份文件数据的唯一标识。
步骤S202:将该待备份文件的指纹数据与保存的文件的指纹数据进行比对,并将比对结果发送给客户端;
具体地,服务器在文件的首次备份时已通过计算获得该文件的指纹数据,在接收到客户端发送的指纹数据后与其在先保存的指纹数据进行比较,若指纹数据相同,则说明文件没有发生变化,若指纹数据不同,则说明文件已经发生变化。
步骤S202和步骤S203的技术效果在于,在经过一段时间t以后,如果不确定原文件是否发生变化,可以将当前文件的指纹数据与原文件的指纹数据进行比对,以确定原文件是否发生变化,若没有变化,则客户端将该文件的指针发送给服务器即可,不必进行后面的操作,然而在本发明实施例中重点讨论的是原文件发生变化的情况。
步骤S203:计算保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据;
具体地,在本发明实施例中将待备份文件按照给定长度划分为数据块,数据块是数据的物理记录,这里的数据块可以理解为一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位;
计算各个数据块的指纹数据的方法与步骤S201中计算待备份文件的指纹数据的方法一致,这里不再赘述;
这里的保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将保存的文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据,具体的计算方法与前面一致,这里不再赘述。
步骤S204:接收客户端发送的待备份文件的各个数据块的指纹数据,及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,并将其与保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对。
步骤S205:将比对结果发送给客户端,并接收客户端发送的指纹数据不一致的数据块及指针;
具体地,对于比对结果相同的数据块,服务器只需指示客户端将该数据块的指针发送给服务器即可,对于比对结果不同的数据,服务器需指示客户端发送该数据块。
需要说明的是,上述实施例可以是对一个文件进行备份,也可以是对同一个文件集所包含的多个文件进行备份,具体的备份方法类似,不再赘述。
本发明实施例的有益效果在于,当客户端待备份文件发生变化需要再次备份时,将该待备份文件的数据块的指纹数据,以及待备份文件的数据块的地址的偏移量递增后的数据块的指纹数据与服务器端保存的文件的数据块的指纹数据,以及文件的数据块的地址的偏移量递增的数据块的指纹数据进行比对,然后将指纹数据发生变化的数据块所对应的数据发送给服务器。因此可以在保证服务器端备份文件唯一存储的前提下,有效地减少服务器端数据存储,进一步提高重复数据删除率。
参见图五,图五是以一个具体的示例来说明本发明一个实施方式所公开的数据处理方法,需要说明的是,对已经完成数据首次备份的实施例而言,下面的步骤S301及S302不是必须的;
步骤S301:客户端首次备份文件数据到服务器;
步骤S302:服务器保存首次备份文件数据及该文件的指纹数据;
具体地,服务器将客户端发送的备份文件数据作为元数据保存,以及将通过计算获得的该文件的指纹数据也保存下来,对于指纹数据的计算方法已在前面实施例中说明,这里不再赘述。
S303:经过一段时间t后,客户端计算并发送文件的指纹数据;
具体地,经过一段时间t后,原文件可能会发生变化,客户端需要将变化的数据发送给服务器以实现数据同步;
然而,此时客户端并不知道原文件是否发生变化,因此需要对原文件变化与否进行验证,验证的具体方法为计算当前文件的指纹数据,并将其发送给服务器。
步骤S304:服务器将客户端发送的指纹数据与保存的指纹数据进行比对;
具体地,服务器接收客户端发送的其当前文件的指纹数据,与其保存的原文件的指纹数据进行比对,如果两个指纹数据相同,则说明文件没有发生变化,如果两个指纹数据不同,则说明文件发生变化,由于本发明实施例所要解决的技术问题是文件发生变化以后的处理,所以这里重点讨论文件发生变化以后的情况。
步骤S305:发送比对结果;
具体地,服务器在步骤S304中通过比对发现文件发生了变化,就将比对结果发送给客户端,接下来进行后面的步骤,若服务器在步骤S304中通过比对发现文件没有变化,则不需要对服务器中保存的文件进行更新了。
步骤S306:计算并发送各个数据块的指纹数据,及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据;
下面以在原文件头部插入一位数据来举例说明:
原文件为:1234ABC;
在原文件头部插入一位数据0之后为:01234ABC;
在本发明实施例中以定长2来划分数据块,即上述01234ABC可以划分为如图10(a)所示的4个数据块:
;
在步骤S306中,客户端通过计算获得每个数据块的指纹数据,及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,具体而言,就是计算数据块(0,1)、(2、3)、(4、A)、(B、C)的指纹数据,以及(1,2)、(3,4)、(A,B)、(C)的指纹数据,并将这些指纹数据发送给服务器;
步骤S307:服务器计算保存的文件的各个数据块的指纹数据及文件的各个数据块的地址偏移量加1后的各个数据块的指纹数据,并依次与客户端发送的各个数据块的指纹数据进行比对;
具体地,以步骤S306中的文件为例,服务器保存的元数据同样为:1234ABC;该各个数据块的指纹数据及文件的各个数据块的地址偏移量加1后的各个数据块的指纹数据为如图10(b)所示:
服务器接收到客户端发送的当前文件的各个数据块的指纹数据后,将第一个数据块(0,1)的指纹数据FPA‘,依次与服务器中保存的文件的数据块(1,2)的指纹数据FP A,数据块(3,4)的指纹数据FP B,数据块(A,B)的指纹数据FP C,数据块(C)的指纹数据FP D,以及偏移量加1的数据块(2,3)的指纹数据FP E,数据块(4,A)的指纹数据FP F,数据块(B,C)的指纹数据FP G进行比对;
在现有技术中,服务器只会计算、保存元数据的各个数据块的指纹数据FPA,FP B,FP C,FP D,当用其同当前文件的各个数据块的指纹数据进行比对时可以发现,当前文件的各个数据块的指纹数据与FP A,FP B,FP C,FP D均不相同,因此将当前文件的所有数据块都备份到服务器中,这就降低了重复数据删除率,增加了服务器端的数据量和网络带宽的消耗了;
而在本发明实施中,服务器将数据块(0,1)的指纹数据FP A’与FP A,FP B,FP C,FP D,FP E,FP F,FP G进行比对后,发现不同,随即比对文件偏移量加1的数据块(1,2)的指纹数据,发现数据块(1,2)的指纹数据与FP A相同,这说明原文件的头部增加了一位数据,于是服务器将该比对结果发送给客户端,要求客户端将数据0发送至服务器。
接下来依次对其余的数据块的指纹数据进行比较,可以发现数据块(3,4)的指纹数据与FP B相同,数据块(A,B)的指纹数据与FP C相同,数据块(C)的指纹数据与FP D相同,由此可以得出结论当前文件是在原文件的头部增加了一位数据0。
步骤S308发送比对结果;
步骤S309:发送指纹数据不一致的数据块及指纹。
具体的,客户端将原文件头部插入的数据0发送给服务器。
可见,本发明实施例只是将发生变化了的一位数据及其指针发送给服务器,与现有技术相比提高了重复数据删除率,减少了服务器的数据存储和网络带宽的消耗。
下面再以原文件的中部的数据发生改变为例说明本发明实施例的数据处理方法;
例如:将原文件1234ABC修改为15D23C;
客户端将当前文件15D23C按照长度2划分的数据块如图10(c)所示为(1,5)、(D,2)、(3,C):
由上述实施例可知,服务器保存的元数据为:1234ABC;该各个数据块的指纹数据及文件的各个数据块的偏移量加1后的各个数据块的指纹数据如图10(d)所示:
服务器将客户端发送的数据块(1,5)的指纹数据FP A’与其计算保存的指纹数据FP A,FP B,FP C,FP D,FP E,FP F,FP G进行比对后,发现没有匹配的指纹数据;
服务器接下来将客户端发送的数据块(5,D)的指纹数据与其保存的指纹数据进行比对后,发现仍然没有匹配的指纹数据,说明数据块(1,5)是一个发生变化的数据块;
然后,服务器将客户端发送的数据块(D,2)的指纹数据与其保存的指纹数据进行比对后,发现没有与其匹配的指纹数据;
服务器接下来将客户端发送的数据块(2,3)的指纹数据与其保存的指纹数据进行比对后,发现与FP E匹配,说明当前数据块在原数据块23的基础上增加了一位数据D,因此可以指示客户端将数据D及其指针发送给服务器;
服务器接下来将客户端剩下的数据块C的指纹数据与其保存的指纹数据进行比对后,发现与FP D匹配,因此可以数据块C没有发生变化,只需指示客户端将数据块C的指针发送给服务器即可;
需要说明的是,客户端对文件按照给定长度进行划分是一种逻辑上的划分,并非是真正意义上的将文件划分为若干个数据块,目的是方便与服务器端保存的文件数据进行对比,找出发生变化的数据,因此在数据块的划分并不是固定的,以上述例子为例,当发现数据块(D,2)的偏移量加1的数据块(1,2)的指纹数据能够在服务器端找到匹配的指纹数据时,可以在逻辑上将数据块(1,2)作为一个数据块,而将其前面一位的数据D,以及后面的数据C分别作为单独的数据块。
服务器完成比对之后,可以通过发送比对结果指示客户端将发生变化的数据块(1,5)、数据块(D)及该两个数据块的指针发送给服务器。
由此可以看出,本发明实施例与现有技术相比,当文件的头部或中部发生变化时,可以提高数据重复删除率,减少服务器的数据存储量及网络带宽的消耗。
参见图六,是本发明一个实施方式所公开的客户端;
第一计算模块601:用于计算待备份文件的各个数据块的指纹数据,以及待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,本发明实施例汇总,指纹数据是用以唯一标识某一文件或者文件的某一数据块的数据;
具体地,指纹数据是指采用SHA-1,MD-5等类似的算法将待备份的文件的各个数据块各自生成一个32位或者128位哈希值与数据形成一一对应关系,由此生成的指纹数据是该待备份文件数据的唯一标识,需要特别指出的是,除了使用以上列举的算法外,本实施例以及后续的其他实施例中,还可以根据具体需要使用其他算法生成指纹数据,只要客户端与服务器的算法一致或者具有对应性,且通过算法产生的数据能够唯一标识待备份文件数据块即可;
在本发明实施例中将待备份文件按照给定长度划分为数据块,数据块是数据的物理记录,这里的数据块可以理解为一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位;
这里的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。
第一发送模块602:用于将待备份文件的各个数据块的指纹数据,以及待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据发送给服务器,用于与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对;
具体地,客户端将计算得出的各个数据块的指纹数据,及文件的各个数据块的地址的偏移量递增后的数据块的指纹数据发送给服务器,用于服务器依次将其与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行对比;
这里的服务器保存的文件的各个数据块的指纹数据,是指将首次备份时客户端发送给服务器的元数据按照给定的长度进行划分的数据块的指纹数据;
这里的保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将服务器之前保存的文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。第一接收模块603:用于接收服务器发送的比对结果。
第二发送模块604:用于根据服务器发送的比对结果,将指纹数据不一致的数据块及指针发送给服务器。
具体地,对于比对结果相同的数据块,服务器只需指示客户端将该数据块的指针发送给服务器即可,对于比对结果不同的数据块,服务器需指示客户端发送该数据块。
需要说明的是,上述实施例可以是对一个文件进行备份,也可以是对由多个文件组成的一个文件集进行备份,具体的备份方法类似,不再赘述。
本发明实施例的有益效果在于,当客户端待备份文件发生变化需要再次备份时,将该待备份文件的数据块的指纹数据,以及待备份文件的数据块的地址的偏移量递增后的数据块的指纹数据与服务器端保存的文件的数据块的指纹数据,以及文件的数据块的地址的偏移量递增的数据块的指纹数据进行比对,然后将指纹数据发生变化的数据块所对应的数据发送给服务器。因此可以在保证服务器端备份文件唯一存储的前提下,有效地减少服务器端数据存储,进一步提高重复数据删除率。
在上述实施例中还可以包括:第二计算模块605、第三发送模块606和第二接收模块607;
第二计算模块605,用于计算待备份文件的指纹数据;
第三发送模块606,用于将该待备份文件的指纹数据发送给服务器,用于将该待备份文件的指纹数据与服务器保存的文件的指纹数据进行比对;
具体地,客户端将计算获得的待备份文件的指纹数据发送给服务器,服务器在文件的首次备份时已通过计算获得该文件的指纹数据,在接收到客户端发送的指纹数据后与其在先保存的指纹数据进行比较,若指纹数据相同,则说明文件没有发生变化,若指纹数据不同,则说明文件已经发生变化。
第二接收模块607,用于接收服务器的比对结果。
本实施例与上一实施例的不同之处在于,在经过一段时间t以后,如果不确定原文件是否发生变化,可以将当前文件的指纹数据与原文件的指纹数据进行比对,以确定原文件是否发生变化,若没有变化,则客户端将该文件的指针发送给服务器即可,不必进行后面的操作。
参见图六,是本发明一个实施方式所公开的服务器;
第三接收模块701:用于接收客户端发送的待备份文件的各个数据块的指纹数据,以及所述待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据;
具体地,指纹数据是指采用SHA-1,MD-5等类似的算法将待备份的待备份文件的各个数据块各自生成一个32位或者128位哈希值与数据形成一一对应关系,由此生成的指纹数据是该待备份文件数据的唯一标识;
在本发明实施例中将待备份文件按照给定长度划分为数据块,数据块是数据的物理记录,这里的数据块可以理解为一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位;
这里的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是指将文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据。第一比对模块702,用于将待备份文件的各个数据块的指纹数据,以及待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据与保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对;
这里的服务器保存的文件的各个数据块的指纹数据,是指将首次备份时客户端发送给服务器的元数据按照给定的长度进行划分的数据块的指纹数据;
这里的保存的文件的各个数据块的偏移量递增后的数据块的指纹数据,是指将保存的文件按照给定的长度进行划分的数据块的地址的偏移量加1后,得到的数据块的指纹数据;
需要说明的是,服务器比对指纹数据可以采用rsync滚动校验算法,依次将客户端发送的数据块的指纹数据,以及地址的偏移量加1的指纹数据与服务器保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据进行比对,同时需要指出的是,本步骤的目的在于进行指纹数据的对比,为了方便说明而以rsync算法进行举例,但显然的,除了rsync算法外,本领域技术人员可以根据实际情况选用其他算法;
例如:以定长为2的数据块为例;第一次,将客户端发送的第一个数据块的指纹数据与服务器保存的文件的第一个数据块的指纹数据进行比对,如果不相同,则将其与服务器保存的文件的第二个数据块的指纹数据进行比对,如果不相同,则依次比对,直至服务器保存的文件的最后一个数据块的指纹数据,如果仍然不相同,则将其与服务器保存的文件的第一个数据块的地址的偏移量加1的指纹数据进行比对,如果不相同,则将其与服务器保存的文件的第二个数据块的地址的偏移量加1的指纹数据进行比对,如果仍然找不到匹配的指纹数据,则可以通知客户端发送该数据块;第二次,将客户端发送的第一个数据块的地址的偏移量加1的数据块的指纹数据按照第一次的步骤,依次与服务器保存的文件的数据块,及偏移量加1的数据块进行比对。
需要说明的是,在本发明实施例中除了可以将文件的数据按照长度为2来划分数据块以外,还可以按照长度为3、定长为4等来划分数据块;
若以长度为3来划分数据块,则当将客户端发送的数据块的指纹数据与服务器端的各个数据块的指纹数据进行比较时,不但要依次比较数据块的地址的偏移量加1的数据块的指纹数据,还需要依次比较数据块的地址的偏移量加2的数据块的指纹数据;
若以长度为4来划分数据块,则当将客户端发送的数据块的指纹数据与服务器端的各个数据块的指纹数据进行比较时,不但要依次比较数据块的地址的偏移量加1的数据块的指纹数据,还需要依次比较数据块的地址的偏移量加2的数据块的指纹数据,以及数据块的地址的偏移量加3的数据块的指纹数据;
以此类推,若以长度为N来划分数据块,N为大于2的自然数,待备份文件的各个数据块的地址的偏移量递增后的数据块的指纹数据,是该待备份文件的各个数据块的地址的偏移量从加1,依次递增至加N-1后的数据块的指纹数据。
同样地,客户端的各个数据块的地址的偏移量递增的数据块,也是从偏移量加1递增至偏移量加N-1的数据块。
第四发送模块703,用于将比对结果发送给客户端,并接收客户端发送的指纹数据不一致的数据块及指针服务器通过第一比对模块702比对得出发生变化的数据块,由此可以将比对结果发送给客户端,指示客户端将指纹数据不一致的数据块及指针发送给服务器。
本发明实施例的有益效果在于,当客户端待备份文件发生变化需要再次备份时,将该待备份文件的数据块的指纹数据,以及待备份文件的数据块的地址的偏移量递增后的数据块的指纹数据与服务器端保存的文件的数据块的指纹数据,以及文件的数据块的地址的偏移量递增的数据块的指纹数据进行比对,然后将指纹数据发生变化的数据块所对应的数据发送给服务器。因此可以在保证服务器端备份文件唯一存储的前提下,有效地减少服务器端数据存储,进一步提高重复数据删除率。
在上述实施例中,还可以包括第四接收模块705和第二比对模块706;
第四接收模块705,用于接收客户端发送的待备份文件的指纹数据;
第二比对模块706,用于将待备份文件的指纹数据与保存的文件的指纹数据进行比对,并将比对结果发送给客户端,用于客户端判断所述待备份文件是否发生变化。
本实施例与上一实施例的不同之处在于,在经过一段时间t以后,如果不确定原文件是否发生变化,可以将当前文件的指纹数据与原文件的指纹数据进行比对,以确定原文件是否发生变化,若没有变化,则客户端将该文件的指针发送给服务器即可,不必进行后面的操作。
进一步地,在上述实施例中,还可以包括第三计算模块704;
第三计算模块,可以用于计算并保存的文件的各个数据块的指纹数据,以及保存的文件的各个数据块的地址的偏移量递增后的数据块的指纹数据。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种能耗确定方法及装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,因此,本说明书内容不应理解为对本发明的限制。