一种索引结构、文件备份方法、文件恢复方法以及系统与流程
未命名
07-23
阅读:135
评论:0
1.本发明属于文件备份恢复技术领域,具体涉及一种索引结构、文件备份方法、文件恢复方法以及系统。
背景技术:
2.现有的主流海量文件备份系统会将文件信息存入第三方数据库中,在备份时会将文件信息插入数据库中,在搜索和恢复文件时会从数据库中查找记录,在对文件进行备份的时候,遇到海量小文件时往往会将小文件合并成大文件,生成一个备份集,以此节省读写数据时的io开销;主流的海量文件备份系统通常使用第三方数据库,如mongdb,来进行索引数据管理,在此种方案中,第三方数据库需要占用一定的资源,包括内存,硬盘空间和cpu资源,使用第三方数据库需要进行学习,开发和后期维护都增加了难度,当出现问题时,若使用者对数据库不够精通,有时还需要原厂技术支持,主流的数据库没有针对存储文件信息的场景进行优化,管理效率低下,因此,需要研发一种新的索引结构、文件备份方法、文件恢复方法以及系统来解决现有的问题。
技术实现要素:
3.本发明的目的在于提供一种索引结构、文件备份方法、文件恢复方法以及系统,以解决海量文件备份需要依赖第三方数据库进行索引数据管理的问题。
4.为实现上述目的,本发明提供如下技术方案:一种索引结构,包括: 索引文件,用于记录索引中文件所在位置和备份的文件信息;目录项文件,用于记录备份的目录和文件名称,并可根据其在所述目录项文件中的位置获取绝对路径和此目录下的所有子目录和文件;以及数据文件,用于存储备份目录中文件的数据;所述索引文件包括:文件节点,用于对目录或文件的绝对路径进行hash计算得到节点号inode,并将其作为全局文件的识别标识;hash数组和链表,用于根据所述节点号inode取模运算得到hash数组与hash链表;头文件,用于记录索引文件中关联的目录项文件和数据文件信息,文件节点的数量以及文件分组。
5.优选的,所述目录项文件记录时将备份对象在绝对路径中的目录层数设为深度,对其深度按下列策略排序:a、目录中的文件和目录排在父目录之后;b、同一路径下的对象目录排列与文件之前,inode值按照从小到大排列。
6.本发明另提供一种基于索引结构的文件备份方法,其特征在于:包括:扫描目标目录;
生成文件节点和目录节点;对hash取模并生成hash链表,生成索引文件和目录项文件;文件分组;备份数据文件,在索引文件中对应的文件节点记录数据信息;备份索引文件和目录文件。
7.优选的,所述生成文件节点和目录节点包括:在扫描出目标路径中所有子目录和子文件后,对扫描出的目录或文件的绝对路径进行hash计算,得到记录的全局唯一标识inode,将对应的文件信息记录到索引节点中,按照扫描顺序生成文件节点部分,将inode和文件或目录名记录,按照和文件节点相同的顺序生成目录节点,使生成的记录在顺序读时,索引节点和目录节点的位置一一对应。
8.优选的,所述对hash取模并生成hash链表包括:对每个索引节点的hash值inode进行取模,得到取模值,所有的模构成hash数组,相同模的inode组成了此模下的hash链表,在链表中记录inode值和对应的文件节点在整个索引文件中的偏移量;所述生成索引文件和目录项文件包括:将hash数组、hash链表和文件节点按顺序合并,并头部预留空间用以记录目录文件和数据文件的位置,生成索引文件,将目录项节点合并生成目录项文件。
9.优选的,所述备份数据文件包括:获取到文件对应的索引节点信息和备份的目标路径后,将扫描出的数据文件进行备份,上传文件到备份介质中,在备份介质中将上传文件合并到一个或多个数据文件中,并返回数据文件中的起始偏移位;所述在索引节点中记录数据信息包括:当数据文件备份成功后,在对应的索引节点中回写在备份文件中的偏移位,备份介质和备份文件的信息则会记录在头部的预留空间中,在索引节点中标记对应的记录,通过索引节点中的标记读到记录,读取备份文件中指定范围的数据还原原本的数据文件。
10.本发明另提供一种基于索引结构的文件恢复方法,包括:读取索引文件;计算恢复目标inode;遍历hash链表定位索引节点、遍历索引节点和对应的目录节点以及遍历所有子文件或子目录;下载并恢复数据文件。
11.优选的,所述计算恢复目标inode包括:对传入的恢复目标的绝对地址进行hash计算,得到inode值,对inode取模并寻找到对应的hash数组。
12.优选的,所述遍历hash链表定位索引节点包括:遍历hash数组下的hash链表,找到对应的inode记录,根据其记录的偏移量跳转到索引文件中对应的索引节点的位置;所述遍历索引节点和对应的目录节点包括:以遍历扫描中确定的文件的索引节点位置为起点,顺序遍历索引节点记录,同时
依据索引节点的位置和记录的目录文件信息,找到对应的目录节点记录,并与索引节点对应,进行顺序遍历;所述遍历所有子文件或子目录包括:在遍历过程中读取目录节点中记录的目录深度信息,扫描出恢复路径中的所有子目录和子文件,当深度低于遍历起始点目录深度时,表示遍历完成,退出遍历并将遍历出的所有信息记录用以恢复数据文件。
13.本发明另提供一种基于索引结构的文件备份和恢复系统,包括:索引数据管理模块,用于写入,查找和读取索引文件;数据备份模块,用于扫描文件生成索引并调用源数据管理模块的接口添加索引;数据恢复模块,用于调用源数据管理模块的接口查找索引并将其恢复到目标路径。
14.本发明的技术效果和优点:该索引结构、文件备份方法、文件恢复方法以及系统,占用系统资源少,通过对索引和目录存储的设计,源码部分大小只要100多kb,备份百万小文件产生的索引文件不超过100mb,在读取时可以轻易的全部加载到主流设备的内存中,只有在调用系统的相关功能时才会占用这些资源,而第三方数据库则通常不能关闭;并且本方案响应快,在查询和恢复目录或文件时只需要少量几次io操作,而io操作的次数并不会随着目录或文件的数量线性增长,同时扩展性强,可支持网络存储,压缩,重删,加密等扩展,对运行环境没有要求,使用方便,降低开发和维护难度。
附图说明
15.图1为本发明索引结构的组成示意图;图2为本发明文件备份方法的流程图;图3为本发明文件恢复方法的流程图;图4为本发明系统的框架示意图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.本发明提供了如图1中所示的一种索引结构,包括索引文件,目录项文件和数据文件;索引文件用于记录索引中各类文件所在的位置和备份的文件信息,其在结构上分为文件节点,hash数组,hash链表和头文件四个部分,组成一个间接索引;文件节点:对目录或文件的绝对路径进行hash计算得到节点号inode,并用其作为全局的文件的识别标识,inode和文件信息一起构成文件节点,此记录在目录项文件中对应记录的位置和在数据文件中的偏移量与文件大小;hash数组和hash链表:对节点号inode进行取模运算得到hash数组与hash链表,对每个索引节点的hash值inode进行取模,得到取模值,拥有相同摸的inode组成了hash链表,
在链表中记录了inode和对应的索引节点记录在整个索引文件中的偏移量;头文件:在头文件中记录了和此索引文件中记录关联的目录项文件和数据文件的相关信息,文件节点的数量以及文件分组,在io寻址时,一块硬盘的磁头数量是有限的,不断的增加io并发不会提高效率,反而会造成io竞争,降低效率。所以在本方案中将在硬盘上处于同一区域的文件数据尽量分到一个任务中,将任务分配给不同线程,提高文件读写效率;目录项文件记录着备份的目录和文件的名称,并可依据其在目录项文件中的位置获取绝对路径和此目录下的所有子目录和文件。在目录项记录中将备份对象在绝对路径中的目录层数设为深度,并遵循以下策略进行排序:目录中的文件和目录排在父目录之后;同一路径下的对象按照目录在前,文件在后,inode值小的在前大的在后,依据此规则将文件目录的树形结构转为一个单向链表,常用的存储介质的寻址特性是随机读取会造成额外的io开销,而顺序读取只需少量几次io寻址,在查找时使用排序后的链表则始终进行顺序读取,速度提升明显,目录项节点的大小可变,以此兼容不同系统中文件名长度的最大上限;数据文件存储了备份的目录中的文件的数据,此文件被合并存储到一个或多个大文件中,并记录了其对应的偏移量,这些大文件称之为数据文件,当从海量小文件中查找目标文件时,需要大量的io操作才能找到文件和读取数据,而当它们被合并到一个大文件中时,能够极大的提高文件的读写效率;本发明另提供如图2所示的一种基于索引结构的文件备份方法,包括以下步骤:扫描目标目录,依据排序规则对备份目录进行扫描,读取目录,文件或软连接的各种信息;生成文件节点和目录节点,在扫描出目标路径中的所有子目录和子文件后,对扫描出的目录或文件的绝对路径进行hash计算,得到记录的全局唯一标识inode,将对应的文件信息记录到索引节点中,按照扫描顺序生成文件节点部分,将inode和文件或目录名记录,按照和文件节点相同的顺序生成目录节点,生成的记录在顺序读时,索引节点和目录节点的位置便会一一对应,无需额外的字段记录对应关系;对hash取模并生成hash链表,对每个索引节点的hash值inode进行取模,得到取模值,所有的模构成了hash数组。相同模的inode组成了此模下的hash链表,在链表中记录了inode值和对应的文件节点在整个索引文件中的偏移量,通过hash链表快速找到目标文件节点并读出文件节点中的数据;生成索引文件和目录文件,将hash数组,hash链表和文件节点按顺序合并,并在头部预留一定大小的空间用以记录目录文件和数据文件的位置之后,生成索引文件,将目录项节点合并生成目录项文件,索引文件中的每个文件节点都对应着目录项文件中的一个目录项;文件分组;根据待备份的目标文件所处的硬盘位置,进行分组,以组为单位备份数据文件,
备份数据文件,在拿到文件对应的索引节点信息和备份的目标路径之后,将扫描出的数据文件进行备份;将文件上传到备份介质中,在备份介质中将这些文件合并到一个或多个数据文件中,并返回在数据文件中的起始偏移位;在索引节点中记录数据信息,当一个数据文件备份成功后,在对应的索引节点中回写在备份文件中的偏移位,备份介质和备份文件的信息则会记录在头部的预留空间中,在索引节点中标记对应的记录,可通过索引节点中的标记读到记录,然后读取备份文件中指定范围的数据还原原本的数据文件;备份索引文件和目录文件。
18.本发明另提供如图3所示一种基于索引结构的文件恢复方法,包括以下步骤:读取索引文件,根据记录的索引文件信息和备份介质信息找到对应的索引,并读取索引文件,依据索引文件的实际大小,可以选择是否一次性将索引文件加载到内存中;计算恢复目标inode,对传入的恢复目标的绝对地址进行hash计算,得到inode值,对inode取模并寻找到对应的hash数组;遍历hash链表定位索引节点,遍历hash数组下的hash链表,找到对应的inode记录。依据其记录的偏移量跳转到索引文件中对应的索引节点的位置;同时遍历索引节点和对应的目录节点,以遍历扫描中确定的文件的索引节点位置为起点,顺序遍历索引节点记录。同时依据索引节点的位置和记录的目录文件信息,找到对应的目录节点记录,并与索引节点对应,进行顺序遍历;遍历出所有子文件或子目录,在遍历过程中读取目录节点中的记录的目录深度信息。遍历的目标是扫描出恢复路径中的所有子目录和子文件,当深度低于遍历起始点目录深度时,表示遍历完成,退出遍历并将遍历出的所有信息记录下来用以恢复数据文件;下载并恢复数据文件,根据索引文件中记录的数据文件信息和索引节点中记录的偏移量,从备份文件中下载指定段落的数据。将数据依据目录文件中记录的位置和名称恢复文件。
19.本发明另提供如图4所示的一种基于索引结构的文件备份和恢复系统,包括:应用于轻量的索引结构和基于此索引实现的海量小文件的备份与恢复系统;包括索引数据管理模块,数据备份模块和数据恢复模块;索引数据管理模块用于写入,查找和读取索引文件;数据备份模块用于扫描文件生成索引并调用源数据管理模块的接口添加索引;数据恢复模块调用源数据管理模块的接口查找索引并将其恢复到目标路径;该索引结构、文件备份方法、文件恢复方法以及系统,占用系统资源少,通过对索引和目录存储的设计,源码部分大小只要100多kb,备份百万小文件产生的索引文件不超过
100mb,在读取时可以轻易的全部加载到主流设备的内存中,只有在调用系统的相关功能时才会占用这些资源,而第三方数据库则通常不能关闭;并且本方案响应快,在查询和恢复目录或文件时只需要少量几次io操作,而io操作的次数并不会随着目录或文件的数量线性增长,同时扩展性强,可支持网络存储,压缩,重删,加密等扩展,对运行环境没有要求,使用方便,降低开发和维护难度。
20.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种索引结构,其特征在于:包括:索引文件,用于记录索引中文件所在位置和备份的文件信息;目录项文件,用于记录备份的目录和文件名称,并可根据其在所述目录项文件中的位置获取绝对路径和此目录下的所有子目录和文件;以及数据文件,用于存储备份目录中文件的数据;所述索引文件包括:文件节点,用于对目录或文件的绝对路径进行hash计算得到节点号inode,并将其作为全局文件的识别标识;hash数组和链表,用于根据所述节点号inode取模运算得到hash数组与hash链表;头文件,用于记录索引文件中关联的目录项文件和数据文件信息,文件节点的数量以及文件分组。2.根据权利要求1所述的索引结构,其特征在于:所述目录项文件记录时将备份对象在绝对路径中的目录层数设为深度,对其深度按下列策略排序:a、目录中的文件和目录排在父目录之后;b、同一路径下的对象目录排列与文件之前,inode值按照从小到大排列。3.一种基于索引结构的文件备份方法,其特征在于:包括:扫描目标目录;生成文件节点和目录节点;对hash取模并生成hash链表,生成索引文件和目录项文件;文件分组;备份数据文件,在索引文件中对应的文件节点记录数据信息;备份索引文件和目录文件。4.根据权利要求3所述的一种基于索引结构的文件备份方法,其特征在于:所述生成文件节点和目录节点包括:在扫描出目标路径中所有子目录和子文件后,对扫描出的目录或文件的绝对路径进行hash计算,得到记录的全局唯一标识inode,将对应的文件信息记录到索引节点中,按照扫描顺序生成文件节点部分,将inode和文件或目录名记录,按照和文件节点相同的顺序生成目录节点,使生成的记录在顺序读时,索引节点和目录节点的位置对应。5.根据权利要求3所述的一种基于索引结构的文件备份方法,其特征在于:所述对hash取模并生成hash链表包括:对每个索引节点的hash值inode进行取模,得到取模值,所有的模构成hash数组,相同模的inode组成了此模下的hash链表,在链表中记录inode值和文件节点在整个索引文件中的偏移量;所述生成索引文件和目录项文件包括:将hash数组、hash链表和文件节点按顺序合并,并头部预留空间用以记录目录文件和数据文件的位置,生成索引文件,将目录项节点合并生成目录项文件。6.根据权利要求3所述的一种基于索引结构的文件备份方法,其特征在于:所述备份数据文件包括:获取到文件对应的索引节点信息和备份的目标路径后,将扫描出的数据文件进行备
份,上传文件到备份介质中,在备份介质中将上传文件合并到一个或多个数据文件中,并返回数据文件中的起始偏移位;所述在索引节点中记录数据信息包括:当数据文件备份成功后,在对应的索引节点中回写在备份文件中的偏移位,备份介质和备份文件的信息则会记录在头部的预留空间中,在索引节点中标记对应的记录,通过索引节点中的标记读到记录,读取备份文件中指定范围的数据还原原本的数据文件。7.一种基于索引结构的文件恢复方法,其特征在于:包括:读取索引文件;计算恢复目标inode;遍历hash链表定位索引节点、遍历索引节点和对应的目录节点以及遍历所有子文件或子目录;下载并恢复数据文件。8.根据权利要求7所述的一种基于索引结构的文件恢复方法,其特征在于:所述计算恢复目标inode包括:对传入的恢复目标的绝对地址进行hash计算,得到inode值,对inode取模并寻找到对应的hash数组。9.根据权利要求7所述的一种基于索引结构的文件恢复方法,其特征在于:所述遍历hash链表定位索引节点包括:遍历hash数组下的hash链表,找到对应的inode记录,根据其记录的偏移量跳转到索引文件中对应的索引节点的位置;所述遍历索引节点和对应的目录节点包括:以遍历扫描中确定的文件节点位置为起点,顺序遍历索引节点记录,同时依据索引节点的位置和记录的目录文件信息,找到对应的目录节点记录,并与索引节点对应,进行顺序遍历;所述遍历所有子文件或子目录包括:在遍历过程中读取目录节点中记录的目录深度信息,扫描出恢复路径中的所有子目录和子文件,当深度低于遍历起始点目录深度时,表示遍历完成,退出遍历并将遍历出的所有信息记录用以恢复数据文件。10.一种基于索引结构的文件备份和恢复系统,其特征在于:包括:索引数据管理模块,用于写入,查找和读取索引文件;数据备份模块,用于扫描文件生成索引并调用源数据管理模块的接口添加索引;数据恢复模块,用于调用源数据管理模块的接口查找索引并将其恢复到目标路径。
技术总结
本发明公开了一种索引结构、文件备份方法、文件恢复方法以及系统,属于文件备份恢复技术领域,包括:索引文件,用于记录索引中文件所在位置和备份的文件信息;目录项文件,用于记录备份的目录和文件名称,并可根据其在所述目录项文件中的位置获取绝对路径和此目录下的所有子目录和文件;以及数据文件,用于存储备份目录中文件的数据;该索引结构、文件备份方法、文件恢复方法以及系统,占用系统资源少,本方案响应快,在查询和恢复目录或文件时只需要少量几次IO操作,而IO操作的次数并不会随着目录或文件的数量线性增长,同时扩展性强,可支持网络存储,压缩,重删,加密等扩展,对运行环境没有要求,使用方便,降低开发和维护难度。降低开发和维护难度。降低开发和维护难度。
技术研发人员:周玥铖 张有成
受保护的技术使用者:南京壹进制信息科技有限公司
技术研发日:2022.12.27
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
