用于访问备份数据的方法和计算机系统转让专利

申请号 : CN200810168605.6

文献号 : CN101404567B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴伟宝M·蔡斯T·哈特尼特

申请人 : 赛门铁克公司

摘要 :

本发明涉及在备份数据上实现读/写、多版本文件系统。公开了计算机系统和方法的各种实施例。在一个实施例中,一种计算机系统包括耦合到备份介质的主机。所述备份介质存储数据段和对象,每个对象引用一个或多个段。第二主机向第一主机传送用于识别数据实体的写请求,所述数据实体包括由第一对象所引用的段。响应于接收到写请求,第一主机恢复所述数据实体的拷贝,并且创建引用被第一对象所引用的段的第二对象。第一主机响应于接收到变化,向第二对象添加段引用,所述变化向所述拷贝添加数据或者从所述拷贝删除段的一部分。如果变化从所述拷贝删除了所有段,则第一主机从第二对象中移除段引用。

权利要求 :

1.一种计算机系统,包括:

耦合到备份介质的第一主机,所述第一主机被配置用于存储多个备份文件到所述备份介质上,所述多个备份文件中的每个文件包括多个数据段中的一个或更多个数据段,其中在存储所述多个备份文件时所述第一主机被配置用于:存储所述多个数据段到所述备份介质上;以及

针对所述多个备份文件的每个相应文件,在所述备份介质上存储引用所述相应文件的所述一个或更多个数据段的相应数据对象;

备份目录,被配置用于存储描述所述多个备份文件的元数据,其中所述备份目录包括针对每个所述备份文件的独立条目,并且其中针对每个相应文件的所述条目包括对应于所述相应文件的文件名和指向引用所述相应文件的所述一个或更多个数据段的所述相应数据对象的指针;以及第二主机,经由网络耦合到所述第一主机,其中该第二主机:包括至所述备份介质的虚拟文件系统接口;以及

被配置用于经由所述虚拟文件系统接口向所述第一主机传送打开所述多个备份文件中的第一备份文件的请求;

其中响应于接收到打开所述第一备份文件的请求,所述第一主机被配置用于:在所述备份介质上创建对应于所述第一备份文件的新版本的新数据对象;

向所述新数据对象添加指针以引用所述第一备份文件的所述一个或更多个数据段;

向所述备份目录添加识别所述第一备份文件的所述新版本的新条目,其中所述新条目包括指向所述新数据对象的指针,其中所述第二主机被进一步配置用于:在所述传送打开所述第一备份文件的请求之后,经由所述虚拟文件系统接口向所述第一主机传送一个或更多个修改请求以修改所述第一备份文件;

其中响应于接收到所述一个或更多个修改请求,所述第一主机被配置用于:在所述备份介质上存储一个或更多个新数据段;以及

修改所述新数据对象以引用所述一个或更多个新数据段,其中在所述修改所述新数据对象时,所述第一主机被配置用于执行以下中的一个或更多个:向所述新数据对象添加一个或更多个新指针以引用所述一个或更多个新数据段;或者从所述新数据对象移除一个或更多个先前已有的指针。

2.如权利要求1所述的系统,其中,所述备份介质利用单实例存储技术。

3.如权利要求1所述的系统,其中,第二主机进一步被配置用于通过虚拟文件系统接口访问所述备份介质。

4.如权利要求3所述的系统,其中,所述虚拟文件系统接口被配置用于使第二主机能够向所述备份介质写入数据对象。

5.如权利要求3所述的系统,其中,所述虚拟文件系统接口被配置用于使第二主机能够在所述备份介质上创建并存储所述备份文件的多个版本。

6.如权利要求5所述的系统,其中,所述目录进一步被配置用于存储用于描述分支的元数据,所述分支包含所述多个备份文件的多个版本。

7.如权利要求1所述的系统,其中,在所述目录中更新与所述新数据对象关联的元数据。

8.一种用于访问备份数据的方法,该方法包括:

在耦合到第一主机的备份介质上存储多个备份文件,所述多个文件中的每个文件包括多个数据段中的一个或更多个数据段,其中所述存储所述多个备份文件包括:在所述备份介质上存储所述多个数据段;以及

针对所述多个备份文件的每个相应文件,在所述备份介质上存储相应数据对象,所述相应数据对象引用所述相应文件的所述一个或更多个数据段;

存储包括描述所述多个备份文件的元数据的备份目录,其中所述备份目录包括针对每个所述备份文件的独立条目,并且其中针对每个相应文件的所述条目包括对应于所述相应文件的文件名和指向引用所述相应文件的所述一个或更多个数据段的所述相应数据对象的指针;

在第二主机上提供虚拟文件系统接口以访问所述备份介质;

经由所述虚拟文件系统接口从所述第二主机向所述第一主机传送打开所述多个备份文件中的第一备份文件的请求;

响应于所述第一主机接收到打开所述第一备份文件的请求:在所述备份介质上创建对应于所述第一备份文件的新版本的新数据对象;

向所述新数据对象添加指针以引用所述第一备份文件的所述一个或更多个数据段;以及向所述备份目录添加识别所述第一备份文件的所述新版本的新条目,其中所述新条目包括指向所述新数据对象的指针;

在所述传送打开所述第一备份文件的请求之后,经由所述虚拟文件系统接口从所述第二主机向所述第一主机传送一个或更多个修改请求以修改所述第一备份文件;

响应于所述第一主机接收到所述一个或更多个修改请求:在所述备份介质上存储一个或更多个新数据段;以及

修改所述新数据对象以引用所述一个或更多个新数据段,其中所述修改所述新数据对象包括以下中的一个或更多个:向所述新数据对象添加一个或更多个新指针以引用所述一个或更多个新数据段;或者从所述新数据对象移除一个或更多个先前已有的指针。

9.如权利要求8所述的方法,其中,还包括在所述备份介质中利用单实例存储技术。

10.如权利要求8所述的方法,还包括通过虚拟文件系统接口访问所述备份介质。

11.如权利要求10所述的方法,还包括通过所述虚拟文件系统接口向所述备份介质写入数据对象。

12.如权利要求10所述的方法,还包括通过所述虚拟文件系统在所述备份介质上创建并存储备份文件的多个版本。

13.如权利要求12所述的方法,还包括在所述目录中存储描述分支的元数据,所述分支包含所述多个备份文件的多个版本。

说明书 :

用于访问备份数据的方法和计算机系统

技术领域

[0001] 本发明涉及计算机系统,更具体地,涉及计算机系统内数据的备份和恢复。

背景技术

[0002] 对于各种机构而言,利用一些类型的备份机制对位于各种客户端设备上的数据进行保护的需求日益增加。例如,众多客户端设备可以耦合到一个网络,一个或多个介质服务器也耦合到该网络。所述介质服务器可包括或进一步耦合到由一个或多个盘存储设备、磁带驱动器或其它备份介质所构成的存储单元。每个客户端设备上的备份代理(agent)可以将数据文件传送到介质服务器以根据各种计划、策略等进行存储。例如,大型备份数据集可以从一个客户端设备移动到被配置来存储用于以后取回的数据的介质服务器,由此保护数据避免因为用户错误、系统故障、断电和灾难等而丢失,以及对合规(regulatory compliance)、工作流追踪等的信息进行归档。
[0003] 为了使得数据更容易获得,一个或多个元数据管理器可以在目录中存储元数据,所述元数据描述相关的备份数据。这样的目录可以被称作元数据库。元数据管理器可以被置于分离的主机上,或者共同置于包括备份数据的主机上。因此,寄留于不同位置的一个或多个元数据库可以包含描述备份数据的数据。
[0004] 客户端设备可以在常规备份介质以及基于盘的备份介质上备份和恢复数据。可以使用常规档案存储技术,其中存储整个数据集,而不管是否已存储了较早的相同版本。在其它情况下,可以使用对数据集进行分段并且对段去重复的单实例存储技术。可以在相同的备份环境中混合常规技术和单实例技术。为了便于寻找存储在备份系统中的数据实体,可以在客户端设备上提供文件系统用户界面。例如,可以通过提供网络文件系统(NFS)或公共互联网文件系统(CIFS)的一些功能的界面来读取备份中的文件。不幸的是,这些界面不提供在备份中写入、修改或创建文件的多个版本的能力。
[0005] 考虑到以上问题,期望有一种考虑了这些问题的、用于在备份介质上存储的备份中写入文件和使文件多版本化的有效系统和方法。

发明内容

[0006] 公开了计算机系统和方法的多个实施例。在一个实施例中,一种计算机系统包括第一主机和第二主机,第一主机耦合到备份介质。所述备份介质被配置用于存储数据段和数据对象,每个数据对象引用一个或多个数据段。第二主机被配置用于向第一主机传送用于识别数据实体的写请求,其中所述数据实体包括由第一数据对象引用的数据段。所述第一主机被配置用于响应于接收到所述写请求,恢复所述数据实体的拷贝,并且创建引用由第一数据对象引用的数据段的第二数据对象。第二主机进一步被配置用于对所述拷贝进行修改,并且向第一主机传送与所述修改相对应的数据变化。第一主机进一步被配置用于响应于接收到数据变化向第二数据对象添加一个或多个数据段引用,所述数据变化向所述拷贝添加数据或者从所述拷贝中删除数据段的一部分。第一主机进一步被配置用于在数据变化从所述拷贝删除了所有数据段的情况下从第二数据对象中移除数据段引用。在一个实施例中,所述备份介质包括单实例备份数据。
[0007] 在另一实施例中,所述计算机系统包括目录,所述目录被配置用于存储描述所述多个备份数据对象的元数据。在另一实施例中,所述主机被配置用于通过虚拟文件系统接口访问备份介质。所述虚拟文件系统接口被配置用于使第二主机能够向所述备份介质写数据。所述虚拟文件系统接口可进一步被配置用于使第二主机能够在备份介质上创建和存储备份数据对象的多个版本。所述目录可进一步被配置用于存储描述分支的元数据,所述分支包含所述多个备份数据对象的多个版本。
[0008] 通过考虑以下描述和附图,这些和其它实施例将变得易于理解。

附图说明

[0009] 图1例示了计算机系统的一个实施例。
[0010] 图2是可在计算机系统内操作的备份系统的一个实施例的概括框图。
[0011] 图3是可以作为备份系统一部分的系统的一个实施例的更为详细的框图。
[0012] 图4例示了目录及其在存储池中的相关数据的一个实施例。
[0013] 图5例示了用户界面的一个实施例,所述用户界面可以由备份代理用来查看备份数据和元数据。
[0014] 图6例示了在写操作期间对与备份数据池中所存储的数据实体相对应的元数据和数据进行的修改的一个实施例。
[0015] 图7例示了修改备份存储池中的文件的处理的一个实施例。
[0016] 图8例示了对应于文件的多个版本的目录元数据的一个实施例。
[0017] 虽然本发明易于进行各种形式的变型和替代,但是通过在附图中举例的方式示出了具体的实施例,并且在此进行详细描述。然而,应该理解的是,此处这些附图和详细描述并不意在将本发明限制于所公开的特定形式,正相反,本发明旨在覆盖落入所附权利要求限定的本发明的精神和范围内的所有变型、等同物和替代物。

具体实施方式

[0018] 图1例示了计算机系统100的一个实施例。如图所示,系统100包括通过网络互连的主机110A-110D和移动主机120A-120D,所述网络包括耦合到广域网WAN/互联网140的局域网(LAN)130和调制解调器组150,所述调制解调器组150继而耦合到公共交换电话网(PSTN)160。主机110A-110D代表任意数目的固定计算机。移动主机120A-120D代表任意数目的移动客户端计算设备,例如膝上型计算机、手持式计算机等。主机和移动主机都可以作为对等配置中的对等方或者作为客户端/服务器配置中的客户端和服务器进行操作。
[0019] 在替代的实施例中,主机、LAN、WAN和调制解调器组的数目和类型并不限于图1所示的情况。几乎任何数目的服务器、台式计算机和移动主机及其组合都可以经由调制解调器组、直接LAN连接、无线连接、WAN链接等的各种组合在系统100中互连。此外,一个或多个主机可以在不同时刻脱机运行。此外,在操作期间,个体主机连接类型可以随着用户从一个地点移动到另一地点而变化,连接、断开和重新连接到系统100。
[0020] 在系统100内,可能需要保护与任意主机110A-110D和移动主机120A-120D相关联的数据。为了保护与主机相关联的数据,可以在主机110A-110D和移动主机120A-120D上运行各种备份组件。现在转向图2,示出了可以在系统100内运行的备份系统200的一个实施例的一般性框图。系统200包括通过网络280耦合到介质服务器250和元数据库服务器260的主机210、220、230、240和270。备份代理215、225和235分别在主机210、220和230上运行。在所示的实施例中,介质服务器250还耦合到存储池255,来自一个或多个主机的数据的拷贝可以存储在存储池255中。在一个实施例中,存储池255可以是备份服务器250的一部分或者包括在备份服务器250中。主机240和270分别可以包括备份数据245和备份数据275,来自一个或多个主机的数据的拷贝也可以存储在所述备份数据245和备份数据275中。在一个实施例中,备份数据245和/或275可以是单实例存储池。元数据库服务器260包括目录265,在所述目录265上可存储描述存储在备份数据245和275以及备份介质255中的数据的元数据。在替代的实施例中,系统200中可包括另外的元数据库。根据系统的存储要求,系统200中还可以包括另外的备份数据。
[0021] 在操作期间,备份代理215、225和235可以执行数据备份。例如,在一个实施例中,可以将数据传送到一个或多个备份数据位置并且将相关的元数据传送到一个或多个元数据库。备份频率可以依赖于多种因素,包括数据保护的紧迫性、存储池容量、网络连接状态和企业策略。在一个实施例中,可以根据计划或者在由管理政策、安全策略所确定的其它时间进行备份,或者为了满足企业的其它需求而进行备份。
[0022] 为了最小化备份数据的大小,可以采用单实例存储技术。在单实例存储池中,数据被分段地存储,其中每个段具有可以用来明确标识它的标识符或指纹。例如,将一个数据文件分段,并且为每个段计算一个指纹。数据段的重复拷贝被所述段的单个实例和一组对所述段的引用所替代,其中每个拷贝有一个到所述段的引用。为了取回备份文件,可以将对应于文件的段的一组指纹用作定位所需段的关键字。一旦取回了这些段,就可以将它们用来重新组装所需的文件。
[0023] 图3是可以作为系统200一部分的系统300的一个实施例的更为详细的框图。系统300包括主机210和240以及元数据库服务器260。主机210包括本地数据存储310、应用320、虚拟文件系统330和备份代理215。主机240包括备份数据245。元数据库260包括目录265,其中可存储描述备份数据245中存储的数据的元数据。应用320可以是各种常规应用(例如字处理程序、电子制表软件、浏览器等)中的任一种。备份代理215可以通过使用常规备份技术直接将数据发送到备份数据245并且将相关的元数据发送到目录265,从本地数据存储310备份数据。备份代理215可以通过使用常规恢复技术直接从备份数据245取回数据并且从目录265取回相关的元数据,将数据恢复到本地数据存储310。此外,应用320可以通过虚拟文件系统330所提供的接口在备份数据上执行读和写操作。在一个实施例中,虚拟文件系统
330可以提供CIFS/NFS接口。可以提供各种另选的接口,例如WebDav接口、伪设备接口等。为了读取备份数据,虚拟文件系统330可以呈现目录265的视图,允许用户或应用选择要取回的数据文件,从存储池245取回文件并且将所取回的文件存储在本地数据存储310中。虚拟文件系统330可允许用户或应用写入备份数据,包括写入多个版本的数据文件,就像写到常规文件系统中那样。在描述可以执行这些动作的过程之前,首先将给出对备份数据245和目录265中存储的数据和元数据的组织的描述。
[0024] 现在转向图4,示出了目录265及其在备份数据245中的相关数据的一个实施例。目录265可包括数据库、表或其它类似的数据结构。在所示的实施例中,目录265包括由条目组成的表。每个条目包括文件名、一组属性和数据对象指针。更具体地,第一条目包括文件名411A、属性411B和数据对象指针411C,并且在下文中可以称为条目411。对于条目412-417,示出了相似的文件名、属性和数据对象指针。
[0025] 在这里使用的文件可包括一个或多个文件或其它数据结构。在一个实施例中,诸如文件名411A的文件名可以包括用户可读的串。然而,由于多个文件可能具有相同的名称,所以在每个条目中还存储数据对象指针以用作在备份数据245中寻找对应数据对象的关键字。在一个实施例中,每个数据对象指针可以是诸如指纹的明确标识符。这里使用的指纹是指数据实体的函数,诸如散列函数。在一个实施例中,可以对指纹进行加密。更具体地,指纹可以包括消息摘要算法5(MD5)或其它散列函数。另选的散列函数包括安全散列算法(SHA)、校验和、签名数据和用于识别数据实体的任意其它适合的函数(加密的或者其它方式的)。诸如文件或文件段的数据实体的拷贝可以通过将一个实体的指纹与另一实体的指纹进行比较来识别。如果指纹匹配,则这两个实体是彼此的拷贝。除了文件名和数据对象指针之外,可以在文件的元数据中包括诸如属性411B的附加属性。属性可以包括各种描述诸如一个或多个以下相关数据的信息:数据大小、批号、类型、版本号、所有权、许可、创建时间、错误码等。其它形式的元数据和/或标识符对于本领域技术人员也是显而易见的。
[0026] 在所示的实施例中,备份数据245包括数据对象表和一组数据段。所述数据对象表包括多个条目,其中每个条目包括数据对象ID和一组相关的数据段指针。更具体地,第一条目包括数据对象ID 420和数据段指针421-424。示出了具有数据对象ID 430、440、450和460的其它条目。数据对象ID 430与数据段指针431-433相关联,数据对象ID 440与数据段指针441相关联,数据对象ID 450与数据段指针451-454相关联,并且数据对象ID 460与数据段指针461-462相关联。在一个实施例中,每个数据对象ID可以是诸如指纹的明确标识符。在另外的实施例中,每个数据段指针可以是诸如指纹的明确标识符。备份数据245还包括数据段和相关联的数据段ID。例如,数据段ID 470A与数据段470B相关联,471A与471B相关联等等。在一个实施例中,每个数据段ID可以是诸如指纹的明确标识符。在另外的实施例中,备份数据245可包括单实例数据对象和单实例数据段,即,数据对象和数据段都可以被去重复。
[0027] 可以安排目录265的数据对象指针和备份数据245的数据对象ID、数据段指针以及数据段ID之间的关系,以允许文件及其数据段被识别、读取、写入以及版本化。更具体地,如通过图4中的连接箭头所示,数据对象指针411C指向数据对象ID 420,412C和416C指向数据对象ID 440,413C和415C指向数据对象ID 450,414C指向数据对象ID 430,417C指向数据对象ID 460。此外,数据段指针421指向数据段ID 470A,数据段指针422指向数据段ID 471A,数据段指针423和433指向数据段ID 472A,等等。在描述了存储备份代理的数据的备份数据和目录的一个实施例的结构和组织之后,现在将注意力转向对备份数据文件进行读取、写入和版本化(versioning)。
[0028] 图5例示了用户界面500的一个实施例,该用户界面500可以被备份代理215用来查看备份数据和元数据。界面500可包括诸如下拉式菜单、导航条、地址栏等的特征。在界面500内示出了两个窗格,文件夹窗格501和细节窗格503。在文件夹窗格内,可以看到文件夹(Folder)及其相关子文件夹(Subfolder)的层级并对其导航。所示的层级包括文件夹510、
520、530、540和550。每个文件夹可包括一个或多个子文件夹。例如,文件夹510包括子文件夹511-514,文件夹550包括子文件夹551-555。如图5所示,子文件夹551已被选择,如其高亮背景所示。
[0029] 在细节窗格503中,可以按行列出在文件夹窗格501中所选择的层级的一部分的细节。每行可包括用于特定数据实体的名称、大小、类型和创建日期的字段。例如,所列出的子文件夹551具有“文件夹(File Folder)”类型并且创建日期为“2002-06-19 10:18AM”。子文件夹551包括子文件夹560,子文件夹560包括文件561-564。文件564已被选择,如其高亮背景所示。要注意,图5中所描述的命名规范(例如,“Subfolder 551”、“File 564”)是为了便于讨论而提供的。在典型实施例中,可以使用反映在普通业务或其它环境(例如,会计、工资单)中所使用的名称的名称。
[0030] 当在文件夹窗格501中选择了所需的数据实体时,备份代理215可以向目录265发送查询,以取回作为所述数据实体一部分的每个文件夹及其所包括的文件的名称和属性。可以对界面500内的数据实体使用常规的文件操纵技术,诸如拖放、右键点击以打开动作列表等。在数据实体被选择时可以执行读取操作。可通过右键点击菜单、从下拉式菜单的拖放动作等,对所选择的数据实体执行写操作。当诸如在新创建的文件夹的备份期间写操作创建了新的数据实体时,备份代理215可以向目录265添加条目并且向备份数据245添加对应的数据。然而,当诸如在现有文件夹内的文件的备份期间或者对现有文件的修订期间写操作修改了目录265中已有的数据实体时,可以进行将参考图6描述的不同处理。
[0031] 图6例示了在写操作期间对与备份数据245中所存储的数据实体相对应的元数据和数据进行的修改的一个实施例。在所示的实施例中,目录265内的条目415对应于要修改的数据实体。条目415可一般地对应于图4所描述的条目415。在开始写操作之前,由图6中标记为“修改之前”的部分所示,条目415包括指向备份数据245中的数据对象450的数据对象指针415C。数据对象450与数据段指针451-454相关联,数据段指针451-454指向数据段476-479的数据段ID。当写操作开始时,如图6中标记为“在Open()时”的部分所示,可以创建新的目录条目。新条目的文件名和属性可以保持不变,即415A和415B。然而,可以利用指向备份数据245中创建的新数据对象650的新数据对象指针615C来创建所述新条目。在一个实施例中,新数据对象650可以表示数据对象450的修订版本。新数据对象650最初可容纳与数据对象ID 450所相关联的数据段指针相同的数据段指针451-454。除了创建新的数据对象之外,可将数据实体恢复以打开进行编辑。在写操作期间,可以在编辑数据实体时将数据段指针添加到新数据对象和/或从新数据对象中移除。数据实体的任意被删除部分会导致一个或多个对应的数据段指针被移除。数据实体的任意被添加部分会导致一个或多个对应的数据段指针被添加。现有数据段被修改会导致对应的数据段指针被指向反映修订的新数据段的指针所替代。
[0032] 例如,如图6中标记为“修改之后”的部分所示,已移除了数据段指针452-454,并添加了数据段指针652-655。数据段指针652-655分别指向ID为677A-680A的数据段。备份代理215还将数据段677B-680B发送到备份数据245。要注意,数据段477B-479B没有从备份数据
245中移除,这是因为至少与数据对象ID 450相关联的数据段指针452-454仍然指向它们。
通过保持备份数据中的这些数据段,可以保留、读取和进一步修订数据实体的较早版本。如果备份数据245不是单实例备份数据,则诸如指针451的数据段指针可以由新数据段指针以及备份数据245中存储的对应数据段的拷贝所替代。此外,一旦写操作完成,所恢复的数据实体可以被发送到备份数据245,并且属性415B可以由一组新属性615B所替代。例如,新属性615B可包括新的时间戳。
[0033] 图7例示了用于修改备份数据内的文件的处理700的一个实施例。处理700可从诸如通过浏览器识别所需文件开始(块710)。一旦识别了所需文件,就可以将其打开(块720)或以其它方式使其可供访问。例如,可以从备份数据恢复所述文件的拷贝。当文件被打开时,可以在存储有所识别文件的数据段的备份数据的数据对象表中创建对应数据对象的新版本(块730),并且可以将相关的元数据条目添加到目录(块735)。与所述文件的数据对象相关联的数据段指针可以被添加到所述备份数据的数据对象表中的新数据对象(737)。接着可以修改所述文件(块740)。修改所述文件而得到的任意新数据段可以被存储在备份数据中(块750)。对应于新数据段的数据段指针可以被添加到新数据对象,并且对应于所述文件的被删除部分的数据段指针可被从新数据对象中移除(块760)。所述文件可以保持打开并且重复块740、750和760直至修改完成(判定块770)。例如,所述文件可以在编辑会话期间保持打开。一旦修改完成,就可以关闭所述文件(块780)。当文件被关闭时,可以在目录中更新与所述新数据对象相关联的元数据(块790),从而完成处理700(块795)。
[0034] 图8例示了对应于文件的多个版本的目录元数据的一个实施例。在所示的实施例中,目录265包括对应于具有文件名810A的文件的多个分支和版本的条目。最初,如图8的左上部分所示,文件名810A与属性810B和数据对象指针810C相关联。每次修改对应的文件时,其元数据都会改变。例如,在图8的左栏,文件名810A相继与属性820B和数据对象指针820C、属性830B和数据对象指针830C、属性840B和数据对象指针840C、属性850B和数据对象指针850C以及属性860B和数据对象指针860C相关联。图8的左栏可以对应于文件的第一分支。所述文件的第二分支示于图8的中间栏,并且所述文件的第三分支示于图8的右栏。如连接箭头所指示,第二分支可以从其元数据包括数据对象指针830C的文件版本创建。在第二分支中,可以进一步修改所述文件,如文件名810与属性831B和数据对象指针831C、属性832B和数据对象指针832C、属性833B和数据对象指针833C、属性834B和数据对象指针834C、属性
835B和数据对象指针835C以及属性836B和数据对象指针836C的相继关联所示。类似地,如连接箭头所示,第三分支可以从其元数据包括数据对象指针834C的文件版本创建。在第三分支中,可以进一步修改所述文件,如文件名810与属性8341B和数据对象指针8341C、属性
8342B和数据对象指针8342C以及属性8343B和数据对象指针8343C等的相继关联所示,等等。对于与文件相关联的任意数据对象,可以执行类似的版本化和分支,这对于本领域技术人员是显而易见的。
[0035] 要注意,上述实施例可包括软件。在这样的实施例中,执行这些方法和/或机制的程序指令可以被传送或存储在计算机可读介质上。可以使用被配置用于存储程序指令的众多类型的介质,包括硬盘、软盘、CD-ROM、DVD、闪存、可编程ROM(PROM)、随机存取存储器(RAM)以及各种其它形式的易失性或非易失性存储器。
[0036] 虽然以上已经相当详细地描述了实施例,但是一旦充分理解了以上公开的内容,多种变化和变型对于本领域技术人员将变得显而易见。以下权利要求意在被解释为包含所有的这些变化和变型。