发明内容
本发明实施例所要解决的技术问题在于,提供一种基于备份文件的索引文件生成方法和装置。可解决现有技术中备份时备份时间长和占用存储资源大的不足。
为了解决上述技术问题,本发明实施例提供了第一方面一种基于备份文件的索引文件生成方法,包括:
获取包括索引节点的文件,所述索引节点包括预定数量的指针;
获取存储备份文件的每一个数据块的地址信息;
将所述索引节点中的指针与获取到的存储备份文件的数据块的地址信息一一映射,生成所述备份文件的索引文件。
结合第一方面,在第一种可能的实现方式中,所述备份文件包括全量备份文件;
所述获取存储备份文件的每一个数据块的地址信息包括:
获取存储所述全量备份文件的每一个数据块的地址信息。
结合第一方面,在第二种可能的实现方式中,所述备份文件包括全量备份文件和增量备份文件;
所述获取存储备份文件的每一个数据块的地址信息包括:
获取存储所述增量备份文件的每一个数据块的地址信息,并获取存储所述全量备份文件的每一个数据块的地址信息,其中所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息。
结合第一方面至第一方面第二种可能的实现方式中的任一种,在第三种可能的实现方式中,所述获取存储备份文件的每一个数据块的地址信息之前包括:
根据当前时间信息查询到最新时刻的存储备份文件的数据块。
结合第一方面第三种可能的实现方式,在第四种可能的实现方式中,所述数据块的地址信息包括指向获取到的存储备份文件的数据块的地址的指针的地址;
所述将所述索引节点中的指针与获取到的存储备份文件的数据块的地址信息一一映射,生成所述备份文件的索引文件包括:
将所述索引节点中的指针与指向获取到的存储备份文件的数据块的指针的地址一一映射,生成所述备份文件的索引文件。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
检测到所述索引文件的调用指令时,返回存储所述索引文件的数据块的地址信息。
相应地,本发明第二方面还提供了一种基于备份文件的索引文件的生成装置,包括:
第一获取模块,用于获取包括索引节点的文件,所述索引节点包括预定数量的指针;
第二获取模块,用于获取存储备份文件的每一个数据块的地址信息;
映射关联模块,用于将所述索引节点中的指针与获取到的存储备份文件的数据块的地址信息一一映射,生成所述备份文件的索引文件。
结合第二方面,在第一种可能的实现方式中,所述第二获取模块包括:
全量文件获取单元,用于根据当前时间获取存储最新时刻的所述全量备份文件的每一个数据块的地址信息。
结合第二方面,在第二种可能的实现方式中,所述第二获取模块包括:
增量文件获取单元,用于获取存储所述增量备份文件的每一个数据块的地址信息,并获取存储所述全量备份文件的每一个数据块的地址信息,其中,若多个增量备份文件中存在相同的数据块时,选择相同的数据块中的最新的数据块的地址信息,所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述映射关联模块包括:
指针地址关联单元,用于将所述索引节点中的指针与指向获取到的存储备份文件的数据块的指针的地址一一映射,生成所述备份文件的索引文件。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
地址返回模块,用于检测到所述索引文件的调用指令时,返回存储所述索引文件的数据块的地址信息。
实施本发明实施例,具有如下有益效果:
利用文件索引节点中指向Block数据块的指针值可改变的特性,直接将该指针指向存储备份文件的数据块,因此不需要将备份文件的数据块复制到合成文件的操作,数据复制是一个消耗时间的动作,因此减少了合成时间。同时不需要创建一个与原始文件大小相同的合成文件,由此减少存储空间占用,提高了存储空间的利用率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明的一种基于备份文件的索引文件的合成方法的流程示意图,包括:
步骤101、获取包括索引节点的文件,所述索引节点包括预定数量的指针。
具体的,在Linux的EXT2或EXT3中,文件包括索引节点iNode和存储该文件数据的数据块,其中索引节点包括文件模式、文件属主、文件大小和指向存储该文件数据块的指针等基本信息。获取到的文件可以是文件系统中已存在的文件或新创建的仅包含索引节点的空文件。
步骤102、获取存储备份文件的每一个数据块的地址信息;
具体的,根据备份策略的不同,获取的数据块的地址也不同,当预先采用的备份方法为全量备份时,只需要获取存储全量备份文件的各个数据块的地址信息,当预先采用全量备份方法和增量备份方法的结合时,获取存储增量备份文件的数据块的地址信息,并获取存储全量备份文件的各个数据块的地址信息,其中在全量备份文件中要剔除数据发生变更的数据块。备份文件中的索引节点中的指针存放有所述备份文件中的数据块的地址信息,根据所述索引节点获取存储备份文件的每一个数据块的地址信息。
步骤103、将所述索引节点中的指针与获取到的存储备份文件的数据块的地址信息一一映射,以生成备份文件的索引文件。
由于该索引文件具有索引节点和索引节点中指针指向的数据块,在操作系统中索引文件即为真实存在的物理文件。
实施本发明,利用文件索引节点中指向Block数据块的指针值可改变的特性,直接将该指针指向存储备份文件的数据块,因此不需要将备份文件的数据块复制到合成文件的操作,数据复制是一个消耗时间的动作,因此减少了合成时间。同时不需要创建一个与原始文件大小相同的合成文件,由此减少存储空间占用,提高了存储空间的利用率。
参见图2,为本发明的一种备份文件的索引文件的合成方法另一流程示意图,包括:
步骤201、获取包括索引节点的文件,所述索引节点包括预定数量的指针。
具体的,所述索引节点包括A个直接指针、1个一级间接指针、1个二级间接指针和1个三级间接指针,指针的地址为2n字节,A,n>=0;m>n且A和n为整数。
步骤202、根据当前时间信息查询到最新时刻的存储备份文件的数据块。
具体的,当存在多个不同备份时间点的备份文件时,检测当前的时间信息,获取各个备份文件的索引节点中的ctime(chang time,变更时间,简称ctime)属性中的变更时间信息,将当前时间与各个备份文件的变更时间信息比较,时间间隔最小的备份文件为最新的备份文件。
步骤203、获取存储所述增量备份文件的每一个数据块的地址信息,并获取存储所述全量备份文件的每一个数据块的地址信息,其中所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息。
具体的,操作系统预先采用的备份策略为全量备份和增量备份的结合,因此需要获取存储全量备份文件的数据块的地址信息和存储增量备份文件的数据块的地址信息,根据步骤202,此时的增量备份文件和全量备份文件为最新的备份文件,获取存储增量备份文件的每一个数据块的地址信息,并获取存储全量备份文件的数据块的每一个数据块的地址,其中所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息。
若备份策略采用的只有全量备份时,只需获取存储全量备份文件的数据块的地址信息。
步骤204、将所述索引节点中的指针与指向获取到的存储备份文件的数据块的指针的地址一一映射,生成所述备份文件的索引文件。
具体的,根据步骤201的索引节点中分配的指针的数量,假设文件系统中的数据块的地址大小为2m字节,地址信息的位数为2n字节,获取到的备份文件的文件大小P字节,当P<=A*2m时,将所述直接指针与所述备份文件中的各个数据块的地址信息一一映射,当A*2m<P<=[A+2(m-n)]*2m时,将所述直接指针,所述一级间接指针与所述备份文件中各个数据块的地址一一映射,当[A+2(m-n)]*2m<P<=[A+2(m-n)+22(m-n)]*2m时,将所述直接指针,所述一级间接指针,所述二级间接指针与所述备份文件中各个数据块的地址信息一一映射,当[A+2(m-n)+22(m-n)]*2m<P<=[A+2(m-n)+22(m-n)+23(m-n)]*2m时,将所述直接指针,一级间接指针,二级间接指针,三级间接指针与所述备份文件中各个数据块的地址信息一一映射,以生成所述备份文件的索引文件。数据块的地址信息还包括指向获取到的存储备份文件的数据块的地址的指针的地址。用户态中的普通文件的访问应用程序可以访问本发明的包括索引节点的索引文件。
步骤205、检测到所述索引文件的调用指令时,返回存储所述索引文件的数据块的地址信息。
实施本发明,利用文件索引节点中指向Block数据块的指针值可改变的特性,直接将该指针指向存储备份文件的数据块,因此不需要将备份文件的数据块复制到合成文件的操作,数据复制是一个消耗时间的动作,因此减少了合成时间。同时不需要创建一个与原始文件大小相同的合成文件,由此减少存储空间占用,提高了存储空间的利用率。
参见图3,为本发明的一种基于备份文件的索引文件的生成装置的结构示意图,包括:
第一获取模块11,用于获取包括索引节点的文件,所述索引节点包括预定数量的指针。
具体的,在Linux的EXT2或EXT3中,文件包括索引节点iNode和存储该文件数据的数据块,其中索引节点包括文件模式、文件属主、文件大小和指向存储该文件数据块的指针等基本信息。第一获取模块11获取到的文件可以是文件系统中已存在的文件或新创建的仅包含索引节点的空文件。
第二获取模块12,用于获取存储备份文件的每一个数据块的地址信息。
具体的,根据备份策略的不同,第二获取模块12获取的数据块的地址也不同,当预先采用的备份方法为全量备份时,第二获取模块12只需要获取存储全量备份文件的各个数据块的地址信息;当预先采用全量备份方法和增量备份方法的结合时,第二获取模块12获取存储增量备份文件的数据块的地址信息,并获取存储全量备份文件的各个数据块的地址信息,其中在全量备份文件中要剔除数据发生变更的数据块。备份文件中的索引节点中的指针存放有所述备份文件中的数据块的地址信息,第二获取模块12根据所述索引节点获取存储备份文件的每一个数据块的地址信息。
映射关联模块13,用于将所述索引节点中的指针与获取到的存储备份文件的数据块的地址信息一一映射,生成所述备份文件的索引文件。
实施本发明,利用文件索引节点中指向Block数据块的指针值可改变的特性,直接将该指针指向存储备份文件的数据块,因此不需要将备份文件的数据块复制到合成文件的操作,数据复制是一个消耗时间的动作,因此减少了合成时间。同时不需要创建一个与原始文件大小相同的合成文件,由此减少存储空间占用,提高了存储空间的利用率。
进一步的,参见图4-图7,为本发明的一种基于备份文件的索引文件的生成装置的另一结构示意图,除第一获取模块11、第二获取模块12和关联映射模块13外,还包括:
地址返回模块14,用于检测到所述索引文件的调用指令时,返回存储所述索引文件的数据块的地址信息。
其中,在本发明的一些实施例中,第二获取模块包括:
全量文件获取单元121,用于获取存储所述全量备份文件的每一个数据块的地址信息。或
增量文件获取单元122,用于获取存储所述增量备份文件的每一个数据块的地址信息,并获取存储所述全量备份文件的每一个数据块的地址信息,其中,若多个增量备份文件中存在相同的数据块时,选择相同的数据块中的最新的数据块的地址信息,所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息。
具体的,操作系统预先采用的备份策略为全量备份和增量备份的结合,因此需要获取存储全量备份文件的数据块的地址信息和存储增量备份文件的数据块的地址信息。根据查询到的最新的备份文件,此时的增量备份文件和全量备份文件为最新的备份文件,增量文件获取单元122获取存储增量备份文件的每一个数据块的地址信息,并获取存储全量备份文件的数据块的每一个数据块的地址,其中所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息。
可以理解的是,当存在多个不同备份时间点的备份文件时,第二获取模块检测当前的时间信息,获取各个备份文件的索引节点中的ctime(chang time,变更时间,简称ctime)属性中的变更时间信息,将当前时间与各个备份文件的变更时间信息比较,时间间隔最小的备份文件为最新的备份文件
进一步的,映射关联模块13包括:
指针地址关联单元131,用于将所述索引节点中的指针与指向获取到的存储备份文件的数据块的指针的地址一一映射,生成所述备份文件的索引文件。
实施本发明,利用文件索引节点中指向Block数据块的指针值可改变的特性,直接将该指针指向存储备份文件的数据块,因此不需要将备份文件的数据块复制到合成文件的操作,数据复制是一个消耗时间的动作,因此减少了合成时间。同时不需要创建一个与原始文件大小相同的合成文件,由此减少存储空间占用,提高了存储空间的利用率。
参见图8,为本发明的一种基于备份文件的索引文件的生成装置的又一结构示意图,包括处理器61、存储器62、输入装置63和输出装置64,生成装置1中的处理器61的数量可以是一个或多个,图8以一个处理器为例。本发明的一些实施例中,处理器61、存储器62、输入装置63和输出装置64可通过总线或其他方式连接,图8中以总线连接为例。
其中,存储器62中存储一组程序代码,且处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
获取包括索引节点的文件,所述索引节点包括预定数量的指针;
获取存储器62中存储备份文件的每一个数据块的地址信息;
将所述索引节点中的指针与获取到的存储备份文件的数据块的地址信息一一映射,生成所述备份文件的索引文件。
在本发明的一些实施例中,处理器61具体用于执行:
获取存储所述全量备份文件的每一个数据块的地址信息,其中,所述备份文件包括全量备份文件。
在本发明的另一实施例中,处理器61具体用于执行:
获取存储所述增量备份文件的每一个数据块的地址信息,并获取存储所述全量备份文件的每一个数据块的地址信息,其中所述全量备份文件中的每个数据块的地址信息不包括数据内容发生变更的数据块的地址信息,其中,所述备份文件包括全量备份文件和增量备份文件。
在本发明的一些实施例中,处理器61还用于执行:
根据当前时间信息查询到最新时刻的存储备份文件的数据块。
在本发明的一些实施例中,处理器61具体用于执行:
将所述索引节点中的指针与指向获取到的存储备份文件的数据块的指针的地址一一映射,生成所述备份文件的索引文件,其中,所述数据块的地址信息包括指向获取到的存储备份文件的数据块的地址的指针的地址。
在本发明的一些实施例中,处理器61还用于执行:
检测到所述索引文件的调用指令时,返回存储所述索引文件的数据块的地址信息。
实施本发明,利用文件索引节点中指向Block数据块的指针值可改变的特性,直接将该指针指向存储备份文件的数据块,因此不需要将备份文件的数据块复制到合成文件的操作,数据复制是一个消耗时间的动作,因此减少了合成时间。同时不需要创建一个与原始文件大小相同的合成文件,由此减少存储空间占用,提高了存储空间的利用率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。