CN101477487B - 多次增量文件的备份方法和恢复方法 - Google Patents
多次增量文件的备份方法和恢复方法 Download PDFInfo
- Publication number
- CN101477487B CN101477487B CN2009100459543A CN200910045954A CN101477487B CN 101477487 B CN101477487 B CN 101477487B CN 2009100459543 A CN2009100459543 A CN 2009100459543A CN 200910045954 A CN200910045954 A CN 200910045954A CN 101477487 B CN101477487 B CN 101477487B
- Authority
- CN
- China
- Prior art keywords
- file
- piece
- backup
- block
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机技术领域的多次增量文件的备份方法和恢复方法,其中备份方法为:扫描历史备份,决定是否备份及备份方式;打开所有增量备份的索引文件和内容文件,以及完全备份文件,以备读取;根据多次增量备份的索引文件,建立索引网络;根据索引网络,从头到尾逐块读出分块的内容到内存;每读出一个分块,都和新源文件的对应位置作比较,逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件;在读下一个分块内容之前,先释放这个分块所占的内存;恢复方法部分前期工作仅包括扫描历史备份;另外每读出一个分块,都写入恢复文件,其他步骤与备份部分相同。本发明加快了备份和恢复速度,节约运算时间、减少备份空间。
Description
技术领域
本发明涉及一种计算机技术领域的文件备份方法和恢复方法,具体是一种多次增量文件的备份方法和恢复方法。
背景技术
在当今的信息化、网络化社会里,计算机在工作和生活中扮演着极其重要的角色。越来越多的企业、商家、政府机关和个人通过计算机来获取信息、处理信息,同时将最重要的信息以数据文件的形式保存在计算机中。一旦这些重要的数据发生灾难,将会导致一个企业停止运转,如果数据丢失还有可能使一个企业面临破产。由此,人们开始关注如何来确保数据的完好,而数据备份则是最重要的解决方案。
经对现有技术的文献检索发现,申请号为200610001299.8的中国专利,名称为“数据恢复方法”,该专利需要本地与远程之间进行完整的文件交换,从而产生了大量的网络传输,在延长了数据恢复时间的同时还带来了传输安全隐患,更重要的是,反复存储同一文件的不同版本(但这些不同版本的大部分内容是相同的),会导致大量的存储空间浪费。这表明需要一种“增量备份”的技术,使得只需备份同一文件不同版本之间的差异,从而减少网络开销和存储开销。
经检索还发现,申请号为200610116303.5的中国专利,名称为“计算机网络数据备份中文件匹配的方法”,该专利在每次备份时生成并传输一个增量备份到远程进行合成,尽管生成一次增量备份比较容易,但对于多次增量来说,这项技术有如下三个不足之处:
(1)逻辑上,一个增量备份是“最新版本备份的文件”和“当前的文件”之间的差异,所以要生成增量备份,必须首先存在这两个文件,才能算出差异。但是,由于增量备份的方式并不存储每个版本的完整的源文件,因此“最新版本备份的文件”并不直接存在,该源文件必须首先被恢复出来。这导致,要做备份,首先要做一次恢复,这是一种时间的浪费;
(2)为了保证恢复时的速度,每次备份必须进行合成,而合成以后就等于每个版本的备份都包含了所有历史上的增量备份信息,仍然浪费存储空间(同时,合成的动作也浪费了运算时间)。极端情况下,浪费的存储空间和每次都备份完整文件一样多。换言之,这并不是真正的多次增量,只是一系列的单次增量而已;
(3)如果不进行合成,则恢复时就极其缓慢,只要历史上有多少个增量备份版本,就要生成多少次中间文件,随着备份的版本越多,恢复会变得越来越慢。
发明内容
本发明的目的在于克服上述现有技术中的不足,提出了一种多次增量文件的备份方法和恢复方法,使其支持多次增量,能够在增量备份前,不必先恢复,从而大大加快备份速度;增量备份后,不必进行合成,从而大大节约运算时间、减少备份空间;恢复时,不必生成任何中间文件,从而大大加快恢复速度。
本发明是通过如下技术方案实现的:
本发明所涉及的多次增量文件的备份方法,包括如下步骤:
步骤一,前期工作:扫描历史备份,决定是否备份及备份方式;
步骤二,打开所有增量备份的索引文件和内容文件,以及第一次备份时直接拷贝的完全备份文件,以备读取;
步骤三,根据多次增量备份的索引文件,建立索引网络;
步骤四,根据索引网络,从头到尾逐块读出最新一次备份的每个分块的内容到内存;
步骤五,每读出一个分块,都和最新版本的源文件的对应位置作比较,逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件,然后,在读下一个分块内容之前,先释放这个分块所占的内存;
步骤六,后期工作:释放索引网络的内存空间,释放缓冲区内存空间,关闭所有文件。
本发明所涉及的多次增量文件的恢复方法,包括如下步骤:
步骤一,前期工作:扫描历史备份;
步骤二,打开所有增量备份的索引文件和内容文件,以及完全备份文件,以备读取;
步骤三,根据多次增量备份的索引文件,建立索引网络;
步骤四,根据索引网络,从头到尾逐块读出最新一次备份的每个分块的内容到内存;
步骤五,每读出一个分块,都写入恢复文件,该恢复文件就是最终得到的恢复结果,在读下一个分块之前,释放这个块的内存;
步骤六,后期工作:释放索引网络的内存空间,释放缓冲区内存空间,关闭所有文件。
步骤一中所述扫描历史备份,决定是否备份及备份方式,包括如下步骤:
①扫描寻找源文件的所有历史备份(即:在存放备份的目录下列举所有文件),找到该源文件最初的完全备份和之后的所有增量备份,并将所有增量备份存入一个链表;
②取出其中最后一次备份(可能为完全备份或增量备份),比较该备份文件和需要备份的源文件的修改日期,如果最后一次备份文件的日期较新,则放弃备份,否则进入步骤③;
③如果该文件以前从未做过备份,则此次执行完全备份,即直接拷贝该文件。
步骤三中所述的根据多次增量备份的索引文件,建立索引网络,包括如下具体步骤:
①构造第一条索引链:将最初的索引文件中的各分块信息逐块读出,并在内存中按顺序构成一个链表,其中匹配块指向最初的完全备份文件中的存放位置,非匹配块指向该索引文件对应的增量内容文件中的存放位置,并在构造链表的过程中,计算每一块所处的位置,每一块的“位置”的起始点是该一块前面的所有块的大小之和,通过累加前面所有块的大小,得到本块的位置;
②构造第二条到最后一条索引链:按从老到新的顺序读剩下的索引文件,对于每个索引文件,都把其中的分块信息构造成一条链表;同时,匹配块指向前一完整文件中的存放位置,不匹配块指向本索引对应的增量内容文件中的存放位置,并计算该块在该版本完整文件中的位置(通过累加前面所有块的大小,得到本块的位置);
③连接相邻两条链:对于所有相邻的两条链,称前面一条为旧链,后面一条为新链。对于新链的每一个匹配块,都指向旧链中对应的依赖块,具体方法为,通过步骤②中得到的匹配块指向前一完整文件中的存放位置,在旧链中搜寻那一个块的位置范围覆盖了这个位置,位置范围是该块在自己版本的完整文件中的[起始位置,起始位置+块长度]之间的范围,这个覆盖了对应位置的块即为对应的依赖块。这样,就形成了索引网络。
步骤四中所述的根据索引网络,从头到尾逐块读出分块的内容到内存,包括如下具体步骤:
①要恢复一个块,首先检查这个块的类型,如果是不匹配块,则直接从对应的增量内容文件中的相应位置读出;如果是匹配块,则转到步骤②;
②通过索引网络找到该块的依赖块,读这个依赖块,如果依赖块是不匹配块,则从依赖块对应的增量内容文件中读出。如果依赖块是匹配块,则继续向依赖块的依赖块追溯,直到遇到不匹配块,或者遇到最老的索引文件链中的匹配块。这是一个递归过程;
③如果读取的依赖块长度未达到本块的需要,则在索引链中搜寻依赖块的下一个块继续读取,直到读出的总长度达到该块的要求。这样,就读到了任意一个块的内容。
步骤五中所述逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件,具体如下:如已经有旧文件的备份,则形成从旧文件变到新文件的增量备份,比较新、旧两个文件的内容,当发现任何新增、删除、修改的内容时,就把它们作为“分块”的边界,比较完毕后,新、旧文件都被分成多个分块,凡是未修改的块,都是匹配的块;凡是增、删、改过的块,都是不匹配的块,新建一个索引文件、一个增量内容文件,其中索引文件里记下新文件每个分块的信息,分块的信息包括位置、长度、是否匹配,对于位置信息,如果是匹配的块,则记录块在旧文件中的位置;如果是不匹配的块,则记录块在增量内容文件中的位置,增量内容文件里记下每个不匹配块的内容。
步骤五中所述的每读出一个分块,都写入恢复文件,具体如下:在恢复的时候,读入索引文件,根据对每个块的描述,读入块的内容并写入恢复文件中,如果是匹配块,则在旧文件中读取;如果是不匹配块,则在增量内容文件中读取,就恢复了新文件。但没有完整的旧文件,因此方法是通过索引网络分块读出旧文件的内容。
多次增量文件的恢复方法的前期工作仅包括扫描历史备份,另外每读出一个分块,都写入恢复文件,其他步骤与备份方法相同。
与现有技术相比,本发明具有以下优点:
(1)增量备份前,不必先恢复,从而大大加快备份速度。增量备份需要用最近一次备份的完整源文件和新的源文件进行比较,但多次增量时,最近一次备份的是增量备份文件(含增量内容文件和索引文件),而不是完整源文件。现有技术不得不首先恢复出一个完整源文件用于比较。但本发明使用多次增量索引文件生成索引网络,利用索引网络,可以不必恢复完整的源文件,就能读取完整源文件中任何一块内容,从而避免了恢复源文件这一步。现有技术如果在备份时做合成,则此时需要一次恢复的时间;如果在备份是不做合成,则此时需要恢复的次数和增量备份的次数一样多;
(2)增量备份后,不必进行合成,从而大大节约运算时间、减少备份空间。现有技术需要合成,合成操作至少需要恢复一次源文件的时间;本发明避免了合成,不需要任何时间。合成出的文件大小约为历史上所有增量文件的总和,假设每次备份的内容文件大约相等,设为n,共备份k次,则现有技术约需要k(k+1)n/2的存储空间;本发明避免了合成,总共只需要kn的存储空间,只占现有技术所需空间的2/(k+1);
(3)恢复时,不必生成任何中间文件,从而大大加快恢复速度。现有技术的恢复必须基于一个旧的完整源文件和一个增量备份,对于多次增量,例如n次增量,现有技术不得不首先用最老的源文件和第1个增量备份恢复出第1个中间文件,再用第1个中间文件和第2个增量备份恢复出第2个中间文件……以此类推,直到得到第n-1个中间文件,最后用第n-1个中间文件和第n个增量备份恢复出最终的源文件。本发明利用索引网络可以直接定位并读取任何一个版本的增量备份(或最老的源文件备份)中的内容,因此完全避免了任何中间文件的产生。现有技术需要恢复n次文件的时间,而本发明只需恢复1次文件的时间。
附图说明
图1是本发明的实施例中单次增量备份的工作原理图;
图2是本发明多次备份、恢复的工作流程图;
图3是本发明多次增量备份工作原理图;
图4是本发明多次增量恢复工作原理图。
具体实施方式
下面结合附图对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,下面首先说明实施例单次增量备份的原理。
当需要备份的文件被修改后,就从旧文件变成了新文件。假设已经有旧文件的备份,现在要得到从旧文件变到新文件的增量备份。比较新、旧两个文件的内容,当发现任何新增、删除、修改的内容时,就把它们作为“分块”的边界。比较完毕后,新、旧文件都被分成多个分块。凡是未修改的块,都是匹配的块;凡是增、删、改过的块,都是不匹配的块。新建一个索引文件、一个增量内容文件,其中索引文件里记下新文件每个分块的信息(包括位置、长度、是否匹配。对于“位置”这一信息来说,如果是匹配的块,则记录块在旧文件中的位置;如果是不匹配的块,则记录块在增量内容文件中的位置),增量内容文件里记下每个不匹配块的内容。在恢复的时候,读入索引文件,根据对每个块的描述,读入块的内容并写入恢复文件中(如果是匹配块,则在旧文件中读取;如果是不匹配块,则在增量内容文件中读取),就恢复了新文件。
以图1中的具体数据为例,旧文件内容为“10 20 30 40 50 60 70 80 90”,新文件内容为“10 40 50 60 61 62 63 70 85 86 90”。比较这两个文件的内容,根据这两个文件发生变化(新增、删除、修改)的边界,可以把它们分块,旧文件被分为“10”、“20 30”、“40 50 60”、“70”、“80”、“90”这些块,新文件被分为“10”、“40 50 60”、“61 62 63”、“70”、“85 86”、“90”这些块。其中,“10”、“40 50 60”、“70”、“90”这四块,新文件和旧文件相同,所以就是匹配块,它们无需写入增量内容文件中。“61 62 63”和“85 86”两块只有新文件有,旧文件没有,所以它们是不匹配块,需要被写入增量内容文件中。旧文件中其他的块在新文件中不复存在,就是删除的块,对它们无需任何处理。无论是匹配块还是不匹配块,它们的信息都要写入索引文件中,这些信息包括:是否匹配块、位置(如果是匹配块,则指在旧文件中的位置;如果是不匹配块,则指在增量内容文件中的位置)、长度(例如,块“10”长度为1,块“61 62 63”长度为3)。这就完成了备份。恢复时,读出索引文件中每块的信息,信息指出了从哪个文件寻找块的内容(若是匹配块,则在旧文件中寻找;若是不匹配块,则在增量内容文件中寻找)、从文件的哪个位置寻找块的内容(“位置”信息指出了这一点)、块的内容有多长(“长度”信息指出了这一点)。使用这些信息,把每一块的内容读出来,按顺序写入一个文件,即恢复成功。
如图2所示,本实施例涉及多次增量文件的备份方法和恢复方法两部分,其中,多次增量文件的备份方法包括如下步骤:
步骤一,扫描历史备份,决定是否备份及备份方式;
步骤二,打开所有增量备份的索引文件和内容文件,以及第一次备份时直接拷贝的完全备份文件,以备读取;
步骤三,根据多次增量备份的索引文件,建立索引网络;
步骤四,根据索引网络,从头到尾逐块读出最新一次备份的每个分块的内容到内存;
步骤五,每读出一个分块,都和新源文件的对应位置作比较,逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件,然后,在读下一个分块内容之前,先释放这个分块所占的内存;
步骤六,释放索引网络的内存空间,释放缓冲区内存空间,关闭所有文件。
多次增量文件的恢复方法包括如下步骤:
步骤一,扫描历史备份;
步骤二,打开所有增量备份的索引文件和内容文件,以及完全备份文件,以备读取;
步骤三,根据多次增量备份的索引文件,建立索引网络;
步骤四,根据索引网络,从头到尾逐块读出最新一次备份的每个分块的内容到内存;
步骤五,每读出一个分块,都写入恢复文件,该恢复文件就是最终得到的恢复结果,在读下一个分块之前,释放这个块的内存;
步骤六,释放索引网络的内存空间,释放缓冲区内存空间,关闭所有文件。
所述扫描历史备份,决定是否备份及备份方式,包括如下步骤:
①扫描寻找源文件的所有历史备份(即:在存放备份的目录下列举所有文件),找到该源文件最初的完全备份和之后的所有增量备份,并将所有增量备份存入一个链表;
②取出其中最后一次备份(可能为完全备份或增量备份),比较该备份文件和需要备份的源文件的修改日期,如果最后一次备份文件的日期较新,则放弃备份,否则进入步骤③;
③如果该文件以前从未做过备份,则此次执行完全备份,即直接拷贝该文件。
如图3、图4所示,本实施例涉及多次增量文件的备份方法和恢复方法所述根据多次增量备份的索引文件,建立索引网络,包括如下步骤:
①构造第一条索引链:将最初的索引文件中的各分块信息逐块读出,并在内存中按顺序构成一个链表,其中匹配块指向最初的完全备份文件中的存放位置,非匹配块指向该索引文件对应的增量内容文件中的存放位置,并在构造链表的过程中,计算每一块所处的位置,每一块的“位置”的起始点是该一块前面的所有块的大小之和,通过累加前面所有块的大小,得到本块的位置;
②构造第二条到最后一条索引链:按从老到新的顺序读剩下的索引文件,对于每个索引文件,都把其中的分块信息构造成一条链表;同时,匹配块指向前一完整文件中的存放位置,不匹配块指向本索引对应的增量内容文件中的存放位置,并计算该块在该版本完整文件中的位置(通过累加前面所有块的大小,得到本块的位置);
③连接相邻两条链:对于所有相邻的两条链,称前面一条为旧链,后面一条为新链。对于新链的每一个匹配块,都指向旧链中对应的依赖块,具体方法为,通过步骤②中得到的匹配块指向前一完整文件中的存放位置,在旧链中搜寻那一个块的位置范围覆盖了这个位置,位置范围是该块在自己版本的完整文件中的[起始位置,起始位置+块长度]之间的范围,这个覆盖了对应位置的块即为对应的依赖块。这样,就形成了索引网络。
如图3、图4所示,本实施例涉及多次增量文件的备份方法和恢复方法所述根据索引网络,从头到尾逐块读出分块的内容到内存,包括如下具体步骤:
①要恢复一个块,首先检查这个块的类型,如果是不匹配块,则直接从对应的增量内容文件中的相应位置读出;如果是匹配块,则转到步骤②;
②通过索引网络找到该块的依赖块,读这个依赖块,如果依赖块是不匹配块,则从依赖块对应的增量内容文件中读出。如果依赖块是匹配块,则继续向依赖块的依赖块追溯,直到遇到不匹配块,或者遇到最老的索引文件链中的匹配块。这是一个递归过程;
③如果读取的依赖块长度未达到本快的需要,则在索引链中搜寻依赖块的下一个块继续读取,直到读出的总长度达到该块的要求。这样,就读到了任意一个块的内容。
备份方法的步骤五中,所述逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件,具体如下:如已经有旧文件的备份,则形成从旧文件变到新文件的增量备份,比较新、旧两个文件的内容,当发现任何新增、删除、修改的内容时,就把它们作为“分块”的边界,比较完毕后,新、旧文件都被分成多个分块,凡是未修改的块,都是匹配的块;凡是增、删、改过的块,都是不匹配的块,新建一个索引文件、一个增量内容文件,其中索引文件里记下新文件每个分块的信息,分块的信息包括位置、长度、是否匹配,对于位置信息,如果是匹配的块,则记录块在旧文件中的位置;如果是不匹配的块,则记录块在增量内容文件中的位置,增量内容文件里记下每个不匹配块的内容。
如图4所示,恢复方法的步骤五中,所述每读出一个分块,都写入恢复文件,具体如下:在恢复的时候,读入索引文件,根据对每个块的描述,读入块的内容并写入恢复文件中,如果是匹配块,则在旧文件中读取;如果是不匹配块,则在增量内容文件中读取,就恢复了新文件。但没有完整的旧文件,因此方法是通过索引网络分块读出旧文件的内容。
本实施例在增量备份前避免了先恢复,从而大大加快备份速度;在增量备份后避免了进行合成,从而大大节约运算时间、减少备份空间;在恢复时,避免了生成任何中间文件,从而大大加快恢复速度。
Claims (7)
1.一种多次增量文件的备份方法,其特征在于,包括如下步骤:
步骤一,扫描历史备份,决定是否备份及备份方式;
步骤二,打开所有增量备份的索引文件和内容文件,以及第一次备份时直接拷贝的完全备份文件,以备读取;
步骤三,根据多次增量备份获得的多个索引文件,建立索引网络,包括如下步骤:
①构造第一条索引文件链:将最初的索引文件中的各分块信息逐块读出,并在内存中按顺序构成一个链表,其中匹配块指向最初的完全备份文件中的存放位置,非匹配块指向该索引文件对应的增量备份的内容文件中的存放位置,并在构造链表的过程中,计算每一块所处的位置,每一块的位置的起始点是该一块前面的所有块的大小之和,通过累加前面所有块的大小,得到本块的位置;
②构造第二条到最后一条索引文件链:按从老到新的顺序读剩下的索引文件,对于每个索引文件,都把其中的分块信息构造成一条链表;同时,匹配块指向前一源文件中的存放位置,不匹配块指向本索引对应的增量备份的内容文件中的存放位置,并计算该块在该版本的源文件中的位置;
③连接相邻两条链:对于所有相邻的两条链,称前面一条为旧链,后面一条为新链,对于新链的每一个匹配块,都指向旧链中对应的依赖块,具体方法为,通过步骤②中得到的匹配块指向前一源文件中的存放位置,在旧链中搜寻哪一个块的位置范围覆盖了这个位置,位置范围是该块在自己版本的源文件中的[起始位置,起始位置+块长度]之间的范围,这个覆盖了对应位置的块即为对应的依赖块,就此形成了索引网络;
步骤四,根据索引网络,从头到尾逐块读出最新一次备份的每个分块的内容到内存,同时每读出一个分块,都和最新版本的源文件的对应位置作比较,逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件,然后,在读下一个分块内容之前,先释放这个分块所占的内存;
步骤五,释放索引网络的内存空间,释放缓冲区内存空间,关闭所有文件。
2.根据权利要求1所述的多次增量文件的备份方法,其特征是,步骤一中
所述扫描历史备份,决定是否备份及备份方式,包括如下步骤:
①扫描寻找源文件的所有历史备份,找到该源文件最初的完全备份文件和之后的所有增量备份,并将所有增量备份存入一个链表;
②取出其中最后一次备份,比较该备份文件和需要备份的源文件的修改日期,如果最后一次备份文件的日期较新,则放弃备份,否则进入步骤③;
③如果该文件以前从未做过备份,则此次执行完全备份,即直接拷贝该文件。
3.根据权利要求1所述的多次增量文件的备份方法,其特征是,步骤四中根据索引网络,从头到尾逐块读出分块的内容到内存,包括如下步骤:
①要恢复一个块,首先检查这个块的类型,如果是不匹配块,则直接从对应的增量备份的内容文件中的相应位置读出;如果是匹配块,则转到步骤②;
②通过索引网络找到该块的依赖块,读这个依赖块,如果依赖块是不匹配块,则从依赖块对应的增量备份的内容文件中读出,如果依赖块是匹配块,则继续向依赖块的依赖块追溯,直到遇到不匹配块,或者遇到最老的索引文件链中的匹配块;
③如果读取的依赖块长度未达到本块的需要,则在索引文件链中搜寻依赖块的下一个块继续读取,直到读出的总长度达到该块的要求。
4.根据权利要求1所述的多次增量文件的备份方法,其特征是,步骤四中逐块生成新的增量备份的索引文件,并对其中不匹配的部分生成新的增量备份的内容文件,具体如下:如已经有源文件的备份,则形成从源文件变到新文件的增量备份,比较新文件和源文件的内容,当发现任何新增、删除、修改的内容时,就把它们作为“分块”的边界,比较完毕后,新文件和源文件都被分成多个分块,凡是未修改的块,都是匹配的块;凡是增、删、改过的块,都是不匹配的块,新建一个索引文件、一个增量备份的内容文件,其中索引文件里记下新文件每个分块的信息,分块的信息包括位置、长度、是否匹配,对于位置信息,如果是匹配的块,则记录块在源文件中的位置;如果是不匹配的块,则记录块在增量备份的内容文件中的位置,增量备份的内容文件里记下每个不匹配块的内容。
5.一种多次增量文件的恢复方法,其特征在于,包括如下步骤:
步骤一,扫描历史备份;
步骤二,打开所有增量备份的索引文件和内容文件,以及完全备份文件,以备读取;
步骤三,根据多次增量备份获得的多个索引文件,建立索引网络,包括如下步骤:
①构造第一条索引文件链:将最初的索引文件中的各分块信息逐块读出,并在内存中按顺序构成一个链表,其中匹配块指向最初的完全备份文件中的存放位置,非匹配块指向该索引文件对应的增量备份的内容文件中的存放位置,并在构造链表的过程中,计算每一块所处的位置,每一块的位置的起始点是该一块前面的所有块的大小之和,通过累加前面所有块的大小,得到本块的位置;
②构造第二条到最后一条索引文件链:按从老到新的顺序读剩下的索引文件,对于每个索引文件,都把其中的分块信息构造成一条链表;同时,匹配块指向前一源文件中的存放位置,不匹配块指向本索引对应的增量备份的内容文件中的存放位置,并计算该块在该版本的源文件中的位置;
③连接相邻两条链:对于所有相邻的两条链,称前面一条为旧链,后面一条为新链,对于新链的每一个匹配块,都指向旧链中对应的依赖块,具体方法为,通过步骤②中得到的匹配块指向前一源文件中的存放位置,在旧链中搜寻哪一个块的位置范围覆盖了这个位置,位置范围是该块在自己版本的源文件中的[起始位置,起始位置+块长度]之间的范围,这个覆盖了对应位置的块即为对应的依赖块,就此形成了索引网络;
步骤四,根据索引网络,从头到尾逐块读出最新一次备份的每个分块的内容到内存,同时每读出一个分块,都写入恢复文件,该恢复文件就是最终得到的恢复结果,在读下一个分块之前,释放这个块的内存;
步骤五,释放索引网络的内存空间,释放缓冲区内存空间,关闭所有文件。
6.根据权利要求5所述的多次增量文件的恢复方法,其特征是,步骤四中根据索引网络,从头到尾逐块读出分块的内容到内存,包括如下步骤:
①要恢复一个块,首先检查这个块的类型,如果是不匹配块,则直接从对应的增量备份的内容文件中的相应位置读出;如果是匹配块,则转到步骤②;
②通过索引网络找到该块的依赖块,读这个依赖块,如果依赖块是不匹配块,则从依赖块对应的增量备份的内容文件中读出,如果依赖块是匹配块,则继续向依赖块的依赖块追溯,直到遇到不匹配块,或者遇到最老的索引文件链中的匹配块;
③如果读取的依赖块长度未达到本块的需要,则在索引文件链中搜寻依赖块的下一个块继续读取,直到读出的总长度达到该块的要求。
7.根据权利要求5所述的多次增量文件的恢复方法,其特征是,步骤四中,每读出一个分块,都写入恢复文件,是指:在恢复的时候,读入索引文件,根据对每个块的描述,读入块的内容并写入恢复文件中,如果是匹配块,则在源文件中读取;如果是不匹配块,则在增量备份的内容文件中读取,就恢复了新文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100459543A CN101477487B (zh) | 2009-01-22 | 2009-01-22 | 多次增量文件的备份方法和恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100459543A CN101477487B (zh) | 2009-01-22 | 2009-01-22 | 多次增量文件的备份方法和恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101477487A CN101477487A (zh) | 2009-07-08 |
CN101477487B true CN101477487B (zh) | 2010-09-29 |
Family
ID=40838208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100459543A Expired - Fee Related CN101477487B (zh) | 2009-01-22 | 2009-01-22 | 多次增量文件的备份方法和恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101477487B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482839B (zh) * | 2009-02-26 | 2010-09-29 | 北京世纪互联宽带数据中心有限公司 | 电子文档增量存储处理方法 |
CN102236586A (zh) * | 2010-04-21 | 2011-11-09 | 雷州 | 一种计算机本地及网络多次增量的数据备份、恢复方法 |
CN102236589B (zh) * | 2010-05-04 | 2013-04-17 | 南京壹进制信息技术有限公司 | 一种基于数字标识符管理增量文件的数据保护方法 |
CN102314383B (zh) * | 2011-09-28 | 2013-12-04 | 华为数字技术(成都)有限公司 | 数据索引的故障恢复方法和装置 |
CN102331957B (zh) * | 2011-09-28 | 2013-08-28 | 华为技术有限公司 | 文件备份的方法及装置 |
CN102436408B (zh) * | 2011-10-10 | 2014-02-19 | 上海交通大学 | 基于Map/Dedup的数据存储云化和云备份方法 |
CN102567053A (zh) * | 2011-12-20 | 2012-07-11 | 云海创想信息技术(无锡)有限公司 | 一种软件版本回退的方法及装置 |
CN103049353B (zh) * | 2012-12-21 | 2016-01-06 | 华为技术有限公司 | 一种数据备份方法及相关装置 |
CN103116615B (zh) * | 2013-01-28 | 2017-08-25 | 袁华强 | 一种基于版本矢量的数据索引方法及服务器 |
CN105335182A (zh) * | 2014-08-06 | 2016-02-17 | 中兴通讯股份有限公司 | 一种实现升级包制作的方法及装置 |
CN106547644B (zh) * | 2015-09-21 | 2020-11-20 | 伊姆西Ip控股有限责任公司 | 增量备份方法和设备 |
CN105302675A (zh) * | 2015-11-25 | 2016-02-03 | 上海爱数信息技术股份有限公司 | 数据备份的方法和装置 |
CN106155845B (zh) * | 2016-08-02 | 2023-03-28 | 四川效率源信息安全技术股份有限公司 | 一种基于xfs文件***数据的重组恢复方法 |
CN106681859B (zh) * | 2016-11-25 | 2021-01-22 | 青岛海信移动通信技术股份有限公司 | 一种短信息的还原方法和装置 |
CN107835206A (zh) * | 2017-09-19 | 2018-03-23 | 平安普惠企业管理有限公司 | 数据更新方法、服务器以及计算机可读存储介质 |
CN107908501A (zh) * | 2017-10-26 | 2018-04-13 | 南京壹进制信息技术股份有限公司 | 一种基于索引的VMware虚拟机合成备份方法 |
CN109710466A (zh) * | 2019-01-03 | 2019-05-03 | 浪潮商用机器有限公司 | 一种数据备份方法及装置 |
CN110083490A (zh) * | 2019-04-29 | 2019-08-02 | 浙江豪联信息科技有限公司 | 一种数据库备份方法、还原方法以及存储介质 |
CN112463450B (zh) * | 2020-11-27 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种增量备份管理方法、***、电子设备及存储介质 |
CN114356245B (zh) * | 2022-01-12 | 2023-09-22 | 济南点量软件有限公司 | 一种海量文件快速比对更新的方法及*** |
CN117435404B (zh) * | 2023-12-21 | 2024-05-28 | 成都云祺科技有限公司 | 永久增量备份数据储存的处理方法、***及数据恢复方法 |
-
2009
- 2009-01-22 CN CN2009100459543A patent/CN101477487B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101477487A (zh) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101477487B (zh) | 多次增量文件的备份方法和恢复方法 | |
CN102236586A (zh) | 一种计算机本地及网络多次增量的数据备份、恢复方法 | |
CN102436408B (zh) | 基于Map/Dedup的数据存储云化和云备份方法 | |
US5764877A (en) | Media recovery with time-split B-trees | |
CN104850598B (zh) | 一种实时数据库备份恢复方法 | |
CA2626227C (en) | Apparatus and method for creating a real time database replica | |
CN100365632C (zh) | 实现内存数据和数据库数据事务一致性的处理方法 | |
CN105868343B (zh) | 数据库迁移方法及*** | |
US7801846B2 (en) | Generating log sequence identifiers to apply a transaction to a storage system | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN106021016A (zh) | 在快照之间的虚拟时间点访问 | |
US11409616B2 (en) | Recovery of in-memory databases after a system crash | |
CN105930500A (zh) | 数据库***中事务恢复的方法与数据库管理*** | |
CN1653427A (zh) | 用于创建虚拟数据拷贝的方法和装置 | |
CN102023903B (zh) | 一种数据备份的版本管理方法及装置 | |
CN102339321A (zh) | 具有版本控制的网络文件***及方法 | |
US8479203B2 (en) | Reducing processing overhead and storage cost by batching task records and converting to audit records | |
CN102891849A (zh) | 业务数据同步方法、恢复方法及装置和网络设备 | |
CN102541691B (zh) | 面向内存数据库oltp应用的日志检查点恢复方法 | |
CN107402981A (zh) | 一种基于分布式离线数据库的数据增量处理方法及*** | |
CN115617571A (zh) | 一种数据备份方法、装置、***、设备及存储介质 | |
CN107783863A (zh) | 一种海量文件快速合成备份方法 | |
CN110471796B (zh) | 一种面向文件目录的完全和增量的备份恢复方法 | |
JP2003532167A (ja) | データベーステーブルリカバリシステム | |
CN111026783A (zh) | 一种防卡死的数据存储方法、***及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100929 Termination date: 20130122 |
|
CF01 | Termination of patent right due to non-payment of annual fee |