CN106547644B - 增量备份方法和设备 - Google Patents
增量备份方法和设备 Download PDFInfo
- Publication number
- CN106547644B CN106547644B CN201510604922.8A CN201510604922A CN106547644B CN 106547644 B CN106547644 B CN 106547644B CN 201510604922 A CN201510604922 A CN 201510604922A CN 106547644 B CN106547644 B CN 106547644B
- Authority
- CN
- China
- Prior art keywords
- file path
- node
- prefix
- file
- prefix tree
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及一种增量备份方法和设备,所述方法包括接收要备份的文件路径集合,解析文件路径集合中的每个文件路径以构建前缀树,遍历所述前缀树以读取前缀树中的有序文件路径集合,以及根据有序文件路径集合来有序地进行增量备份。本公开的实施例利用共享共同路径前缀的前缀树,来对要备份的文件路径集合进行排序,能够实现文件路径集合的快速排序,并且能够有效节省在存储器中排序大量文件路径时所需要的存储空间,以及减少排序时执行文件名比较的操作次数。
Description
技术领域
本公开的实施例总体上涉及数据备份技术,更具体地涉及增量备份方法和设备。
背景技术
增量备份是指只备份上次备份以后修改过或者新增加的数据信息,其通常需要对所有的文件进行遍历。一般来说,快速增量备份通过快照技术发现区别文件和元数据,并加以备份。在快速增量备份的过程中,通过比较两次快照之间的区别文件和元数据所得到的增量文件路径,该文件路径的顺序是按照它们在快照中的先后位置而被依次返回,因此无法保证返回的文件路径的顺序。然而,用于增量备份的数据管理应用(DMA)通常只能针对特定顺序的文件路径进行批量备份处理,因而在增量备份的过程中,需要对生成的文件路径集合执行排序处理。
通常,使用快速排序(quick sort)来对生成的文件路径集合进行排序处理。然而,在某些情况下,需要排序的文件数量可以达到千万级别(例如,2700万个文件),而且文件路径经常是较长的字符串(例如,最长的文件路径长度大约为4KB)。对于如此多的文件数量和如此长的文件路径,如果要在存储器中执行快速排序,则最多需要100GB(2700万×4KB)的存储器空间。此外,如果将该排序移到磁盘中进行处理(也被称为外部排序),由于磁盘的速度远低于存储器,因此需要消耗很长的排序时间。
因此,在传统的快速排序方法仅仅擅长数字的排序、现有的TRIE树仅适合较短的字符串(例如,单词)的排序的情况下,如何对要备份的文件路径集合实现快速高效地排序,并且节省要备份的文件路径集合的存储空间,成为一个亟待解决的问题。
发明内容
有鉴于此,本公开的实施例提供一种增量备份方法和设备,能够对文件路径集合执行快速排序,并且节省在存储器中排序大量文件路径时所需要的存储空间。
根据本公开的一个方面,公开了一种增量备份方法,该方法包括:接收要备份的文件路径集合,解析文件路径集合中的每个文件路径以构建前缀树,遍历前缀树以读取前缀树中的有序文件路径集合,以及根据有序文件路径集合来有序地进行增量备份。
根据本公开的一个实施例,其中要备份的文件路径至少包括字母和特殊字符。根据本公开的另一个实施例,其中前缀树中的任何一个节点的所有子节点具有共同前缀,共同前缀包括一个或者多个字符。根据本公开的又一个实施例,其中前缀树初始为空树。
根据本公开的一个实施例,其中解析文件路径集合中的每个文件路径,以构建前缀树包括:在前缀树中依次***文件路径集合中的每个文件路径,并且将每个文件路径与其被***时的前缀树进行比较。
根据本公开的另一个实施例,其中解析文件路径集合中的每个文件路径,以构建前缀树包括:将具有共同前缀的多个路径的共同前缀分配到同一个节点,其中共同前缀中的至少一个共同前缀包括多个字符。
根据本公开的又一个实施例,其中将每个文件路径与其被***时的前缀树进行比较包括:针对每个文件路径,将文件路径与前缀树中的第N层节点进行前缀匹配,其中N≥1并且N初始值为1:当文件路径与第N层的所有节点之间不存在共同前缀时,将文件路径***作为第N层的新的节点;当文件路径与第N层的一个节点之间存在共同前缀时,将文件路径***作为一个节点的新的子节点,其中在所述文件路径被***时,确保同一层的所有子节点的第一个字符按照ASCII大小进行排序。
根据本公开的一个实施例,其中当文件路径与第N层的一个节点之间存在共同前缀时,将文件路径***作为一个节点的新的子节点包括:当共同前缀是一个节点中的一部分字符时,利用一部分字符来替换一个节点中的字符。此外,在利用一部分字符来替换一个节点中的字符之后,新***的文件路径的节点内容为被***的文件路径除去共同前缀的部分,并且先前的一个节点中除了共同前缀之外的剩余部分也作为该一个节点的新的子节点被***。例如,当原节点为aaabbb时,新***的路径为aaaccc,在则***路径后,原节点被更新为aaa,并且该一个节点生成子节点bbb和子节点ccc。
根据本公开的另一个实施例,其中在构建前缀树时,基于节点中的第一个字符的ASCII码大小,来对同一层的所有节点进行排序。根据本公开的又一个实施例,其中在构建前缀树时,向存在文件路径的节点分配值。
根据本公开的一个实施例,其中遍历前缀树,以读取前缀树中的有序文件路径集合包括:使用深度优先搜索来遍历前缀树,以有序地读取具有值的所有节点作为有序文件路径集合。
根据本公开的另一个方面,公开了一种增量备份设备,该设备包括:接收装置,用于接收要备份的文件路径集合;解析装置,用于解析文件路径集合中的每个文件路径,以构建前缀树;遍历装置,用于遍历前缀树,以读取前缀树中的有序文件路径集合;以及备份装置,用于根据有序文件路径集合来有序地进行增量备份。
本公开的示例性实施例可以带来以下技术效果中的至少一种:利用共享共同路径前缀的前缀树,来对要备份的文件路径集合进行排序,减少了路径的字符串之间的比较次数,从而能够实现文件路径集合的快速排序;同时,利用共同前缀减少重复的字符串的存储,从而能够节省文件路径的存储空间。
附图说明
结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例。在附图中:
图1图示了根据本公开的实施例的增量备份方法100的流程图;
图2图示了根据本公开的一个实施例的前缀树的示例;
图3A-3D图示了构建图2中的前缀树的过程的示例;
图4图示了根据本公开的另一实施例的前缀树的示例;
图5图示了根据本公开的另一实施例的文件路径排序的示例;
图6图示了根据本公开的实施例的增量备份设备600的框图;以及
图7图示了可以在其中实现根据本公开的实施例的计算机设备700的框图。
具体实施方式
以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和***的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以使用专用硬件与计算机指令的组合来实现。
本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一个实施例”、“又一个实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制发明的范围。
在本公开的实施例中,网络数据管理协议(NDMP)表示备份软件与存储设备之间的一种通用协议,其用于在网络连接存储(NAS)设备与备份设备之间传输数据。网络数据管理协议减少了通过备份服务器本身传输数据的需要,因此能够提高备份速度并且减轻备份服务器的负载。
在本公开的实施例中,数据管理应用(DMA)是用于创建和控制NDMP会话的应用程序,其使用NDMP和NDMP兼容存储产品来创建和运行NDMP会话,从而实现有效的数据管理,包括:执行数据卷的备份、恢复以及复制文件***等。
在本公开的实施例中,便携式文档交换(PAX)表示利用标准UNIX磁带格式工作的网络服务器文档协议,其可以提供文件级的备份和恢复操作。PAX支持0-10级的备份,其中0级表示完全备份,1-10级表示不同级别的增量备份。其中10级备份可以用于备份最近备份以来修改的所有文件,例如10级备份,或者在之前没有10级备份时执行更低级别的备份。
在本公开的实施例中,文件遍历服务(FTS)用于遍历文件***中的文件,并且备份线程根据文件的元数据(例如,时间戳等)来计算文件是否需要被备份,这些文件然后被馈送到PAX以用于备份。
在本公开的实施例中,文件增量备份***是提供快照等功能的增量备份***,其可以提供应用程序接口(API)来比较文件快照***之间的区别,以实现增量备份。快速增量备份是一种比传统备份更高性能的备份解决方案,能够更有效地发现需要备份的文件。
在本公开的实施例中,直接访问恢复(DAR)用于根据要备份的文件路径集合来恢复文件。使用支持DAR的恢复,DMA能够指定备份存储器(例如,磁带设备)中的文件的精确位置。NDMP服务器仅需读取需要被恢复的单个文件的数据,降低了处理的信息量并且显著地减少了恢复时间。
在本公开的实施例中,文件历史用于在每次备份时描述文件的元数据信息,例如,时间戳、访问权限等。文件历史可以在NDMP中进行定义,并且由备份软件(例如,DMA)选择需要取回的文件,从而能够帮助实现直接访问恢复。
在本公开的实施例中,文件路径(file path)表示文件的操作***路径,文件路径的典型特点是路径长、重复多,例如,在下表1示出的示例文件路径集合中,最短的文件路径有29个字符,并且路径之间的共同路径前缀最长达到35个字符。
表1
在本公开的实施例中,路径排序(path sort)是指按照某种特定的顺序对无序的文件路径集合进行排序,以生成有序的文件路径集合。例如,将表2中的无序的文件路径集合重新排列(按照字母顺序进行排列)为表3中的有序的文件路径集合。
表2
表3
图1图示了根据本公开的实施例的增量备份方法100的流程图,该方法100包括,在步骤102处,接收要备份的文件路径集合。由于文件备份软件(例如,DMA)通常只能针对特定顺序的文件路径进行批量处理,因此在文件增量备份***计算出在上次备份之后修改的文件之后,需要对要备份的文件路径集合进行排序,因此,方法100首先接收要备份的文件路径集合。
根据本公开的一个实施例,其中要备份的文件路径至少包括字母和特殊字符。如以上表1-表3所示出的,文件路径中至少包括字母(例如,“o”)和特殊字符(例如,“/“)。要备份的文件路径集合以行(或者多行)为单位,呈现无序的排序。
在步骤104处,解析文件路径集合中的每个文件路径以构建前缀树。前缀树是一种有序的数据结构,其用于存储动态的数据,前缀树中的键通常表示为字符串,例如,一个或者多个字符。与二叉查找树不同,前缀树中的节点的键不是被存储在一个节点中;相反,前缀树中的节点的键是从根节点到当前节点的路径上的所有节点保存的字符串值之和,而它的值被保存在当前节点。根据本公开的实施例,其中前缀树中的任何一个节点的所有子节点具有共同前缀,共同前缀包括一个或者多个字符。在前缀树中,并不是所有的节点都存在值,仅向存在文件路径的节点分配值,即,只有对应于具体路径的节点才具有值,其中树的根节点到当前节点路径上的所有节点包含的字符串作为键。
图2图示了根据本公开的一个实施例的前缀树的示例,下表4示出了对应于该前缀树的文件路径集合,图2中的前缀树的具体构建过程参考图3A-3D。在图2的示例中,将表4中的无序文件路径集合构建成有序的前缀树,与传统的方法相比(例如,快速排序),在图2的前缀树中,共同的前缀“/home/bi”和“/home/bin”被合并,理论上能够节省超过一半的(例如,25字节)存储空间。
表4
现有的字典树(TRIE)适用于较短的字符串(例如,单词),每个节点仅表示一个字母,要导致树的层级过多,此外,TRIE树是通过哈希的算法进行匹配,排序的空间复杂度较高。然而,由图2可以看出,与现有的TRIE树相比,本公开的实施例的前缀是能够应用于长字符串的备份的场景,适用于大规模字符串(例如,文件路径)的排序,具有较低的空间复杂度并且树的层级也较少,例如,“/home/bi”只需在一个节点中被表示。
图3A-3D图示了构建图2中的前缀树的过程的示例。首先,在图3A处,建立空树。前缀树初始为空树,空树仅包含树根(tree root),而没有任何子节点。
在图3B处,在空的前缀树中***表4中的文件路径集合中的第一条路径“/home/bin”,由于前缀树中目前没有任何节点,因此仅将第一条路径与空树中的空字符“”进行比较,没有共同前缀,则直接将第一条路径“/home/bin”***作为树根的(tree root)子节点。
在图3C处,***表4中的第二条路径“/home/bin2”,将***的第二条路径“/home/bin2”与前缀树中的节点“/home/bin”进行比较,共同的前缀为“/home/bin”,则将第二条路径的剩余的字符“2”保存到新创建的更低层的节点,被当作共同前缀字符串“/home/bin”的子节点。如果新***的路径与所有的子节点不存在共同前缀,则如图3B中所图示的,将新***的路径直接***到前缀树的当前层,并且按序进行排列,例如,基于节点中的第一个字符的ASCII码大小,来对同一层的所有节点进行排序。此外,虽然符号“/”的ASCII是47,但是为了满足排序要求,符号“/”需要被特殊考虑,具体地,在排序过程中,可以将符号“/”作为数字“0”进行排序。
在图3D处,***第三条路径“/home/bit”,首先,将该路径与树根的子节点进行比较,共同前缀是“/home/bi”,第一层的原始节点“/home/bin”将被拆分为共同前缀“/home/bi”和另外的“n”,新***的路径中的“t”将被保存到新创建的更低层的节点,同时,节点“n”将被产生,也作为共同前缀“/home/bi”的子节点,而节点“2”将相应地降一层级,作为节点“n”的子节点,因此,当前已生成的节点/home/bin”被动态更新为“/home/bi”。
在图3D中的已构建的前缀树中,灰色填充的节点被标记为具有值。如果路径对应于值,则该文件路径的最后节点将具有值,例如,路径“/home/bin2”的值将被保存在具有节点“2”上,同理,路径“/home/bin”的值将被保存在节点“n”上。在图3的前缀树的构建过程中,***路径的比较时间取决于字符串长度,这与现有的快速排序方法有所不同(快速排序的比较时间取决于路径的数目)。
根据图3的前缀树的构建过程,可以得出解析文件路径集合中的每个文件路径,以构建前缀树包括:在前缀树中依次***文件路径集合中的每个文件路径,并且将每个文件路径与其被***时的前缀树进行比较。可选地,将具有共同前缀的多个路径的共同前缀分配到同一个节点,其中共同前缀中的至少一个共同前缀包括多个字符。备选地,针对所述每个文件路径,将所述文件路径与所述前缀树中的第N层节点进行前缀匹配,其中N≥1并且N初始值为1:步骤A:如果所述文件路径与所述第N层的所有节点之间不存在共同前缀,则将所述文件路径***作为所述第N层的新的节点;步骤B:如果所述文件路径与所述第N层的一个节点之间存在共同前缀,则将所述文件路径***作为所述一个节点的新的子节点;将N加1,并且在第N+1层重复上述步骤A和步骤B,直到路径已经被***到节点时结束上述重复过程,其中在所述文件路径被***时,确保同一层的所有子节点的第一个字符按照ASCII大小进行排序。
图4图示了根据本公开的另一实施例的前缀树的示例,下表5示出了对应于该前缀树的文件路径集合,其中,图4的前缀树中的第二层节点“home”、第五层节点“eyondCompare”、第五层节点“in”、第四层节点“sbin”、第三层节点“pstream”以及第三层节点“wd”上分别具有值,并且这些节点的值顺序地对应于排序后的文件路径集合。
表5
继续参考图1,在步骤106处,遍历前缀树,以读取前缀树中的有序文件路径集合。根据本公开的一个实施例,其中遍历前缀树,以读取前缀树中的有序文件路径集合包括:使用深度优先搜索来遍历前缀树,以有序地读取具有值的所有节点作为有序文件路径集合。在使用深度优先搜索来遍历所述前缀树时,当发现遍历的节点是一个路径结尾时,则从根节点到当前节点的路径上,所有节点包含的字符串构成一个路径;重复上述搜索过程,可以得到有序的文件路径结合。
深度优先搜索算法用于尽可能“深”地搜索一个树中的节点,是本领域常用的树的搜索算法。深度优先遍历从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。若此时还有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。在方法100中,随着路径和文件属性被***到前缀树中,有序路径集在前缀树中被组织,使用深度优先搜索来根据前缀树生成有序的路径序列。以图4中的前缀树为例,使用深度优先搜索进行遍历,从前缀树读取出的有序文件路径集合依次为“home”、“/home/beyondCompare”、“/home/bin”、“/home/sbin”、“/root/ppstream”以及“/root/pwd”。
在步骤108处,根据有序文件路径集合来有序地进行增量备份,数据管理应用(DMA)接收从前缀树中读取的有序路径,并且执行相应的增量备份。
根据本公开的实施例,不同路径中的共同前缀字符串将被合并,减少了重复路径的存储,有效地提高了存储效率。现有的快速排序中,产生了过多的无需的比较(例如,快速排序需要比较两条路径)。本公开的方法能够减少排序比较的次数,这对于较长的共同前缀的路径的情形下,尤其适用。例如,在下表6的文件路径集合中,快速排序需要对包括共同前缀“/c4_working/code/fastIncBk/sade/src/dart/Dart/server/src/ccmd/catalog/messages/STATUS/”的路径之间进行LOG(n)次比较,以发现其中的一条路径的正确位置,因此快速排序的时间复杂度是LOG(5)*86。与此相反,在本公开的实施例的方法100中,对于新***的一条路径,仅需要比较一次,在最优的情况下,本公开的方法中的时间复杂度可以为86。
表6
下表7示出了使用本公开实施例的前缀树进行排序的增量备份方法的测试结果。其中,文件路径集合包括821,025条路径(87,584,412个字符,87.58兆字节)。由表7可以看出,与传统的快速排序(快速排序消耗的存储器包括字符串本身、指针数组以及极端情况下消耗的栈大小)相比,前缀树排序只消耗约49.6MB的存储器,因此能够节省51.2%的存储空间。
排序方法 | 消耗的存储器(字节) |
快速排序 | 100,720,621≈96MB |
前缀树*** | 49,216,71≈46.9MB |
图5图示了根据本公开的另一实施例的文件路径集合的排序的示例。在图5的示例中,当文件路径集合的数量非常巨大(例如,10万条路径)时,对每个前缀树的大小设置阈值,一旦达到该阈值,就对文件路径集合执行分段,即分段地解析文件路径集合中的每个文件路径,以构建多个前缀树,读取每个前缀树有序路径集合,以生成对应的文件(例如,文件1、文件2…文件i),并且将这些文件转储到磁盘上。在所有的路径处理完毕之后,再利用其他排序方法(例如,多路归并算法)对i个文件中的路径集合再次进行整合排序。
图6图示了根据本公开的实施例的一种增量备份设备600,包括:接收装置602,用于接收要备份的文件路径集合;解析装置604,用于解析文件路径集合中的每个文件路径,以构建前缀树;遍历装置606,用于遍历前缀树,以读取前缀树中的有序文件路径集合;以及备份装置608,用于根据有序文件路径集合来有序地进行增量备份。
根据本公开的实施例,其中要备份的文件路径至少包括字母和特殊字符。根据本公开的实施例,其中前缀树中的任何一个节点的所有子节点具有共同前缀,共同前缀包括一个或者多个字符。根据本公开的实施例,其中前缀树初始为空树。
根据本公开的实施例,其中解析装置604进一步用于:在前缀树中依次***文件路径集合中的每个文件路径,并且将每个文件路径与其被***时的前缀树进行比较。根据本公开的另一实施例,其中解析装置进一步用于:将具有共同前缀的多个路径的共同前缀分配到同一个节点,其中共同前缀中的至少一个共同前缀包括多个字符。
根据本公开的实施例,其中解析装置604进一步用于:针对每个文件路径,将文件路径与前缀树中的第N层节点进行前缀匹配,其中N≥1并且N初始值为1:当文件路径与第N层的所有节点之间不存在共同前缀时,将文件路径***作为第N层的新的节点;当文件路径与第N层的一个节点之间存在共同前缀时,将文件路径***作为一个节点的新的子节点,其中在所述文件路径被***时,确保同一层的所有子节点的第一个字符按照ASCII大小进行排序。根据本公开的另一实施例,其中解析装置进一步用于:当共同前缀是一个节点中的一部分字符时,利用一部分字符来替换一个节点中的字符。
根据本公开的实施例,其中解析装置604进一步用于:在构建前缀树时,基于节点中的第一个字符的ASCII码大小,来对同一层的所有节点进行排序。根据本公开的另一实施例,其中解析装置进一步用于:在构建前缀树时,向存在文件路径的节点分配值。
根据本公开的实施例,其中遍历装置606进一步用于:使用深度优先搜索来遍历前缀树,以有序地读取具有值的所有节点作为有序文件路径集合。
应当理解,设备600可以利用各种方式来实现。例如,在某些实施例中,设备600可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和***可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本公开的实施例的设备和装置不仅可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合来实现。
应当注意,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
在下文中,将参考图7来描述可以在其中实现本公开的实施例的计算机设备。图7图示了可以在其中实现根据本公开的实施例的计算机设备700的框图。
图7中所示的计算机***包括CPU(中央处理单元)701、RAM(随机访问存储器)702、ROM(只读存储器)703、***总线704、硬盘控制器705、键盘控制器706、串行接口控制器707、并行接口控制器708、显示器控制器709、硬盘710、键盘711、串行外部设备712、并行外部设备713和显示器714。在这些部件中,与***总线704相连的有CPU 701、RAM 702、ROM703、硬盘控制器705、键盘控制器706、串行接口控制器707、并行接口控制器708和显示器控制器709。硬盘710与硬盘控制器705相连,键盘711与键盘控制器706相连,串行外部设备712与串行接口控制器707相连,并行外部设备713与并行接口控制器708相连,以及显示器714与显示器控制器709相连。需要说明的是,图7所述的结构框图仅仅为了示例的目的而示出的,并非是对本公开的限制。在一些情况下,可以根据需要添加或者减少其中的一些设备。本公开的实施方式可以作为计算机程序代码存储在上计算机的例如硬盘710的存储设备中,在被载入诸如内存中运行时,将使得CPU 701执行根据本公开的实施例的日志存储优化方法。
以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。
Claims (21)
1.一种增量备份方法,包括:
接收要备份的文件路径集合;
根据前缀树的大小来设置阈值;
响应于达到阈值,分段地解析所述文件路径集合中的每个文件路径,以构建所述前缀树,其中构建所述前缀树包括:
将每个文件路径与被***时的前缀树进行比较,包括:响应于某个文件路径与所述前缀树中的叶节点之间的共同前缀是所述叶节点的一部分,将所述叶节点拆分成两个节点;
遍历所述前缀树以读取所述前缀树中的有序文件路径集合,其中遍历所述前缀树以读取所述前缀树中的所述有序文件路径集合包括:
使用深度优先搜索来遍历所述前缀树,以有序地读取具有值的所有节点作为所述有序文件路径集合,其中如果在使用所述深度优先搜索之后发现遍历的节点是文件路径的结尾,则沿着从根节点到给定节点的所述文件路径的所有节点中所包括的多个字符串合并构成单个文件路径;以及
根据所述有序文件路径集合来有序地进行增量备份。
2.根据权利要求1所述的方法,其中所述要备份的文件路径至少包括字母和特殊字符。
3.根据权利要求1所述的方法,其中所述前缀树中的任何一个节点的所有子节点具有共同前缀,所述共同前缀包括一个或者多个字符。
4.根据权利要求1所述的方法,其中所述前缀树初始为空树。
5.根据权利要求1所述的方法,其中解析所述文件路径集合中的每个文件路径,以构建前缀树包括:
在所述前缀树中依次***所述文件路径集合中的每个文件路径。
6.根据权利要求1所述的方法,其中解析所述文件路径集合中的每个文件路径,以构建前缀树包括:
将具有共同前缀的多个路径的所述共同前缀分配到同一个节点,其中所述共同前缀中的至少一个共同前缀包括多个字符。
7.根据权利要求5所述的方法,其中将每个文件路径与其被***时的前缀树进行比较还包括:
针对每个文件路径,将所述文件路径与所述前缀树中的第N层节点进行前缀匹配,其中N≥1并且N初始值为1:
当所述文件路径与所述第N层的所有节点之间不存在共同前缀时,将所述文件路径***作为所述第N层的新的节点;以及当所述文件路径与所述第N层的一个节点之间存在共同前缀时,将所述文件路径***作为所述一个节点的新的子节点,其中在所述文件路径被***时,确保同一层的所有子节点的第一个字符按照ASCII大小进行排序。
8.根据权利要求7所述的方法,其中当所述文件路径与所述第N层的一个节点之间存在共同前缀时,将所述文件路径***作为所述一个节点的新的子节点包括:
当所述共同前缀是所述一个节点中的一部分字符时,利用所述一部分字符来替换所述一个节点中的字符。
9.根据权利要求1所述的方法,其中在构建所述前缀树时,基于节点中的第一个字符的ASCII码大小,来对同一层的所有节点进行排序。
10.根据权利要求1所述的方法,其中在构建所述前缀树时,向存在文件路径的节点分配值。
11.一种增量备份设备,包括:
接收装置,用于接收要备份的文件路径集合;
设置装置,用于根据前缀树的大小来设置阈值;
解析装置,用于响应于达到阈值而分段地解析所述文件路径集合中的每个文件路径,以构建所述前缀树,所述解析装置还用于将每个文件路径与被***时的前缀树进行比较,包括:响应于某个文件路径与所述前缀树中的叶节点之间的共同前缀是所述叶节点的一部分,将所述叶节点拆分成两个节点;
遍历装置,用于通过以下遍历所述前缀树以读取所述前缀树中的有序文件路径集合:通过使用深度优先搜索来遍历所述前缀树,以有序地读取具有值的所有节点作为所述有序文件路径集合,其中如果在使用所述深度优先搜索之后发现遍历的节点是文件路径的结尾,则沿着从根节点到给定节点的所述文件路径的所有节点中所包括的多个字符串合并构成单个文件路径;以及
备份装置,用于根据所述有序文件路径集合来有序地进行增量备份。
12.根据权利要求11所述的设备,其中所述要备份的文件路径至少包括字母和特殊字符。
13.根据权利要求11所述的设备,其中所述前缀树中的任何一个节点的所有子节点具有共同前缀,所述共同前缀包括一个或者多个字符。
14.根据权利要求11所述的设备,其中所述前缀树初始为空树。
15.根据权利要求11所述的设备,其中所述解析装置进一步用于:
在所述前缀树中依次***所述文件路径集合中的每个文件路径。
16.根据权利要求11所述的设备,其中所述解析装置进一步用于:
将具有共同前缀的多个路径的所述共同前缀分配到同一个节点,其中所述共同前缀中的至少一个共同前缀包括多个字符。
17.根据权利要求16所述的设备,其中所述解析装置进一步用于:
针对每个文件路径,将所述文件路径与所述前缀树中的第N层节点进行前缀匹配,其中N≥1并且N初始值为1:
当所述文件路径与所述第N层的所有节点之间不存在共同前缀时,将所述文件路径***作为所述第N层的新的节点;以及当所述文件路径与所述第N层的一个节点之间存在共同前缀时,将所述文件路径***作为所述一个节点的新的子节点,其中在所述文件路径被***时,确保同一层的所有子节点的第一个字符按照ASCII大小进行排序。
18.根据权利要求17所述的设备,其中所述解析装置进一步用于:
当所述共同前缀是所述一个节点中的一部分字符时,利用所述一部分字符来替换所述一个节点中的字符。
19.根据权利要求11所述的设备,其中所述解析装置进一步用于:
在构建所述前缀树时,基于节点中的第一个字符的ASCII码大小,来对同一层的所有节点进行排序。
20.根据权利要求11所述的设备,其中所述解析装置进一步用于:
在构建所述前缀树时,向存在文件路径的节点分配值。
21.一种计算机可读存储介质,存储计算机可读程序指令,所述计算机可读程序指令在由处理器执行时,引起所述处理器执行根据权利要求1至10中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510604922.8A CN106547644B (zh) | 2015-09-21 | 2015-09-21 | 增量备份方法和设备 |
US15/268,789 US10802923B2 (en) | 2015-09-21 | 2016-09-19 | Method and apparatus for incremental backup based on file paths and a prefix tree |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510604922.8A CN106547644B (zh) | 2015-09-21 | 2015-09-21 | 增量备份方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106547644A CN106547644A (zh) | 2017-03-29 |
CN106547644B true CN106547644B (zh) | 2020-11-20 |
Family
ID=58282332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510604922.8A Active CN106547644B (zh) | 2015-09-21 | 2015-09-21 | 增量备份方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10802923B2 (zh) |
CN (1) | CN106547644B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117420A (zh) * | 2017-06-23 | 2019-01-01 | 百度在线网络技术(北京)有限公司 | 操作日志记录方法和装置 |
CN110389857B (zh) * | 2018-04-20 | 2023-04-21 | 伊姆西Ip控股有限责任公司 | 数据备份的方法、设备和非瞬态计算机存储介质 |
CN109740165A (zh) * | 2019-01-09 | 2019-05-10 | 网易(杭州)网络有限公司 | 字典树构建方法、语句搜索方法、装置、设备及存储介质 |
CN111723050A (zh) * | 2019-03-22 | 2020-09-29 | 伊姆西Ip控股有限责任公司 | 用于文件管理的方法、电子设备和计算机程序产品 |
CN111858145B (zh) * | 2019-04-25 | 2024-07-09 | 伊姆西Ip控股有限责任公司 | 数据备份与恢复的方法、设备和计算机程序产品 |
US11237964B2 (en) * | 2019-04-30 | 2022-02-01 | EMC IP Holding Company LLC | Caching techniques for migrating and replicating data |
CN110737592B (zh) * | 2019-09-16 | 2024-01-30 | 平安科技(深圳)有限公司 | 一种链路异常识别方法、服务器及计算机可读存储介质 |
US20220150241A1 (en) * | 2020-11-11 | 2022-05-12 | Hewlett Packard Enterprise Development Lp | Permissions for backup-related operations |
US20240028473A1 (en) * | 2022-07-25 | 2024-01-25 | Dell Products L.P. | System and method for optimizing network attached storage backup of a large set of files based on resource availability |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477487A (zh) * | 2009-01-22 | 2009-07-08 | 上海交通大学 | 多次增量文件的备份方法和恢复方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6003044A (en) * | 1997-10-31 | 1999-12-14 | Oracle Corporation | Method and apparatus for efficiently backing up files using multiple computer systems |
US7266574B1 (en) * | 2001-12-31 | 2007-09-04 | Emc Corporation | Identification of updated files for incremental backup |
US7055008B2 (en) * | 2003-01-22 | 2006-05-30 | Falconstor Software, Inc. | System and method for backing up data |
US20060149766A1 (en) * | 2004-12-30 | 2006-07-06 | Amol Ghoting | Method and an apparatus to improve processor utilization in data mining |
US7783677B2 (en) * | 2007-03-30 | 2010-08-24 | Microsoft Corporation | Tracking file system namespace changes during transactions |
CN102236589B (zh) * | 2010-05-04 | 2013-04-17 | 南京壹进制信息技术有限公司 | 一种基于数字标识符管理增量文件的数据保护方法 |
US8676763B2 (en) * | 2011-02-08 | 2014-03-18 | International Business Machines Corporation | Remote data protection in a networked storage computing environment |
US8677366B2 (en) * | 2011-05-31 | 2014-03-18 | International Business Machines Corporation | Systems and methods for processing hierarchical data in a map-reduce framework |
JP5703971B2 (ja) * | 2011-05-31 | 2015-04-22 | セイコーエプソン株式会社 | 情報処理装置、プログラム及び情報処理方法 |
CN103645905B (zh) * | 2013-12-20 | 2017-08-08 | 北京中电普华信息技术有限公司 | 一种增量数据获取方法及装置 |
-
2015
- 2015-09-21 CN CN201510604922.8A patent/CN106547644B/zh active Active
-
2016
- 2016-09-19 US US15/268,789 patent/US10802923B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477487A (zh) * | 2009-01-22 | 2009-07-08 | 上海交通大学 | 多次增量文件的备份方法和恢复方法 |
Non-Patent Citations (2)
Title |
---|
基于前缀树的数据流容错概要结构构造;由育阳,等;;《北京航空航天大学学报》;20110531;第37卷(第5期);564-568 * |
基于粒网络生成规则的文本分类研究;张霞,等;;《计算机科学》;20081231;第35卷(第12期);167-170 * |
Also Published As
Publication number | Publication date |
---|---|
CN106547644A (zh) | 2017-03-29 |
US10802923B2 (en) | 2020-10-13 |
US20170083406A1 (en) | 2017-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547644B (zh) | 增量备份方法和设备 | |
US9575976B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
US9407287B2 (en) | Parallel history search and encoding for dictionary-based compression | |
JP5732536B2 (ja) | 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム、方法及び非一時的なコンピュータ可読ストレージ媒体 | |
US8527558B2 (en) | Distributed garbage collection | |
US7117294B1 (en) | Method and system for archiving and compacting data in a data storage array | |
CN107153647B (zh) | 进行数据压缩的方法、装置、***和计算机程序产品 | |
US9442694B1 (en) | Method for storing a dataset | |
WO2012174268A1 (en) | Processing repetitive data | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
US20050192998A1 (en) | Automatic reduction of table memory footprint using column cardinality information | |
CN112817538B (zh) | 数据处理的方法、装置、设备和存储介质 | |
US20230281179A1 (en) | Load Balancing For A Storage System | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
US20150213048A1 (en) | Hybrid of proximity and identity similarity based deduplication in a data deduplication system | |
CN111143113A (zh) | 复制元数据的方法、电子设备和计算机程序产品 | |
Bender et al. | Iceberg hashing: Optimizing many hash-table criteria at once | |
WO2021097273A1 (en) | Merging multiple sorted lists in a distributed computing system | |
CN102495838B (zh) | 数据处理方法及装置 | |
US10997139B2 (en) | Search apparatus and search method | |
CN106569986A (zh) | 字符串替换方法和装置 | |
US9280573B2 (en) | System and method for array-based data storage and search | |
CN113597605B (zh) | 多级数据沿袭视图 | |
US8849866B2 (en) | Method and computer program product for creating ordered data structure | |
JP6278121B2 (ja) | 情報処理装置、データ処理方法、及び、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200421 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Massachusetts, USA Applicant before: EMC Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |