详细描述
一般而言,本发明的各方面对应于一种用于生成储存在计算机网络中的各个计算设备内的内容的聚集视图的系统和方法。本发明的某些具体方面对应于一种用于自动查询定义的网络中的计算设备并生成合并的查询响应的视图的系统和方法。尽管本发明将相对于其中所有网络计算设备都具有用于该网络的所有授权用户的公共安全配置文件的计算设备网络来描述的,但相关领域的技术人员将认识到,本发明可以在其中每一计算设备可对授权网络用户维护单独的安全配置文件的替换计算网络中实现。此外,相关领域的技术人员将认识到,本发明的部分或全部方面可在具有用于调节用户访问的集中网络授权机构的受管计算机网络中实施。因此,相对于本发明所描述的实施例本质上是说明性的,并且不应被解释为限制。
转向附图,其中相同的标号指代相同的元素,本发明被视为在一合适的计算环境中实现。尽管并非所需,但本发明将在诸如程序模块等由个人计算机执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等等。此外,本领域的技术人员可以理解,本发明可以用其它计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型计算机等。本发明也可以在其中任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
以下描述以对可在根据本发明的某些方面的受保护网络组中使用的通用计算设备的描述开始。现在转向图1,以常规个人计算机20的形式示出了通用计算设备,包括处理单元21、系统存储器22以及将包括系统存储器的各类系统组件耦合至处理单元21的系统总线23。系统总线23可以是若干种总线结构的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构中任一种的局部总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26包含如在启动时协助在个人计算机20内的元件之间传输信息的基本例程,它可被储存在ROM 24中。个人计算机20还包括用于对硬盘60进行读写的硬盘驱动器27,用于对可移动磁盘29进行读写的磁盘驱动器28,以及用于对可移动光盘31,如CD-ROM或其它光介质进行读写的光盘驱动器30。
硬盘驱动器27、磁盘驱动器28以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接至系统总线23。驱动器及其相关的计算机可读介质为个人计算机20提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例环境采用了硬盘60、可移动磁盘29以及可移动光盘31,但本领域的技术人员可以理解,示例性操作环境中也可以使用可储存数据的可由计算机访问的其它类型的计算机可读介质,诸如盒式磁带、闪存卡、数字视频盘、Bernoulli盒式磁盘、随机存取存储器、只读存储器、存储区域网等等。
多个程序模块可被储存在硬盘60、磁盘29、光盘31、ROM 24或RAM 25中,包括操作系统35、一个或多个应用程序36、其它程序模块37以及程序数据38。用户可以通过诸如键盘40和定点设备42等输入设备向个人计算机20输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的串行端口接口46连接到处理单元21,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)或网络接口卡。监视器47或其它类型的显示设备也通过接口,如视频适配器48连接到系统总线23。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。
个人计算机20可以使用到一个或多个远程计算机,如远程计算机49的逻辑连接在联网环境中操作。远程计算机49可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有以上相对于个人计算机20所描述的元件,尽管在图1中仅示出了存储器存储设备50。图1描述的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这类联网环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN联网环境中使用时,个人计算机20通过网络接口或适配器53连接至局域网51。当在WAN联网环境中使用时,个人计算机20通常包括调制解调器54或用于通过WAN 52建立通信的其它装置。调制解调器54可以是内置或外置的,它通过串行端口接口46连接至系统总线23。在联网环境中,相对于个人计算机20所描述的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
图2是示出根据本发明的各说明性方面的计算机网络100的框图,该网络包括三个计算设备102、104和106。计算设备102、104和106可被实施为可用于将内容保持到计算机网络100的各种设备中的任一种。计算设备的示例包括但不限于,个人计算设备、手持式计算设备、基于服务器的计算设备、个人数字助理、移动电话、单机存储器设备、具有某种类型的存储器的电子设备等等。
在本发明的一个说明性实施例中,每一计算设备102、104和106维护对应于每一授权用户的唯一安全标识符(“SID”)的安全信息数据库108。数据库108也可维护将唯一用户SID与诸如管理员、用户、审阅者等一组或多组用户以及该组的唯一安全标识符相关联的信息。根据该说明性实施例,安全信息数据库108在计算设备102、104和106中的每一个处复制,使得包括用户SID在内的用户的安全配置文件可在计算设备102、104和106中的任一个处访问。
如图2所示,对特定用户,第一计算设备102“机器A”在诸如硬盘驱动器或其它大容量存储设备等可由用户以某种方式访问的本地存储位置上维护第一文件110“文件A”。类似地,第二计算设备104“机器B”维护第二文件“文件B”,第三机器106“机器C”维护第三文件114“文件C”,该第二和第三文件都可由用户以某种方式访问。(计算设备102、104和106可以是如图1所示的个人计算机。)如将在以下更详细解释的,在本发明的一个说明性实施例中,每一文件110、112、114维护指示哪些用户SID和组SID具有访问特定文件的许可的访问控制列表(“ACL”)。另外,每一文件ACL还可指示对特定用户SID或组SID可具有的访问类型的限制。例如,文件ACL可指示特定用户可访问文件以读取文件,但是不能以任何方式修改该文件。此外,每一文件ACL还可指示对应于创建该文件和/或最后编辑该文件的用户SID的文件的当前所有者。然而,在常规的数据管理方法下,用户必须记住每一个数据的精确位置来远程地访问数据。尽管对数据的管理是关于ACL来描述的,但是相关领域的技术人员将认识到,也可利用诸如安全加密、数字权限管理等其它数据管理。
参考图3-5,将描述在计算机网络100的三个计算设备102、104和106中的聚集视图请求的发起和处理。参考图3,该过程以用户在机器A 102处接收到内容标识请求开始。基于与特定用户或用户帐号相关联的唯一SID,机器A 102启动对应于该唯一SID以及可用于选择数据的各种准则中的任一个的本地内容查询。准则的示例包括关键词搜索、文件类型、日期范围。与本地内容查询同时地,或在处理本地查询之后,机器A 102自动向网络100中的计算设备104、106启动分布式内容查询。由于说明性网络中的每一计算设备内的安全配置文件具有复制的安全配置文件数据库108,因此机器A 102可向每一计算设备发出相同的内容查询。此外,尽管图3示出了网络100上的每一计算设备接收分布式内容查询,机器A也可将内容请求限于网络100内的计算设备的一个子集。
参考图4,接收内容请求的每一计算设备处理该请求,并返回标识匹配内容和该内容的位置的信息。例如,在该说明性示例中,机器B 104将返回标识文件B 112及其在机器B的存储系统内的具体位置的信息。同样,机器C 106将返回标识文件C及其在机器C的存储系统内的具体位置的信息。在本发明的一个说明性实施例中,位于每一计算设备处的内容不被发送到作出请求的计算设备。此外,如将在以下更详细解释的,也可处理先前储存的内容请求响应或高速缓存的内容请求响应。
一旦机器A 102接收到查询响应,查询结果即被合并。在本发明的一个说明性实施例中,合并的结果被具体化为不带对内容的位置或起源的直接引用的所有匹配内容的单个表示。然而,机器A 102可从用户获得附加指令以为作出请求的用户排序或以其它方式组织合并的结果。例如,机器A 102可按照大小、日期、起源等来排序合并的内容。再者,机器A 102可将附加视觉提示关联到合并的结果以标识特定数据,诸如储存在当前不可用的计算设备上的数据。
图5是图2的计算机网络100的框图,它示出了在该网络中的每一计算设备处处理聚集视图请求的结果。出于图5的目的,假定计算设备102、104和106中的每一个发出了聚集视图请求,并且每一计算设备的内容未被更改。机器A 102的聚集视图示出文件A 110、文件B 112和文件C 114,其中文件B和文件C以虚线示出以表示它们在机器A的远程储存。类似地,机器B 104的聚集视图以虚线示出与所示的文件A 110和文件C 114相同的内容,以表示它们被远程地储存。最后,机器C 106的聚集视图以虚线示出与所示的文件A 110和文件B 112相同的内容,以表示它们被远程地储存。基于每一计算设备102、104和106处的聚集视图,用户可访问相同的内容而无需了解其实际位置。此外,在计算设备中的一个或多个不可用的情况下,计算设备仍可用指示该内容当前不可用的附加视觉提示来示出储存在不可用机器上的内容。
图6是示出根据本发明的各方面由诸如计算设备102、104、106等网络计算设备实现的聚集视图创建例程600的流程图。在框602处,获得创建内容的聚集视图的用户请求。在本发明的一个说明性实施例中,该聚集视图请求可直接对应于用户对显示内容的任何类型的应用程序或模块的访问。例如,聚集视图请求可对应于软件应用程序内的打开文件的请求。类似地,聚集视图创建请求可对应于文件系统管理程序的启动。再者,聚集视图请求可在特定事件发生时,诸如在一天中特定的时间、在计算设备通电之后、在计算设备连接到网络之后等等被自动生成。
在框604处,计算设备向本地计算设备文件系统查询匹配内容查询的内容。在本发明的一个说明性实施例中,该内容查询采用了数据库查询的形式,诸如微软公司的SQL数据库支持的查询函数。该数据库查询包括用于确定匹配内容的一组准则。在本发明的一个说明性实施例中,该查询包括匹配由用户SID安全性令牌标识的用户能访问的所有内容的请求。另外,该查询可包括可用于匹配内容的任意数目的附加准则,诸如关键词搜索、文件类型、数据范围等等。计算设备存储系统然后可接受该查询,并标识匹配该查询准则的任何内容。相关领域的技术人员将理解,查询串的某些或所有部分,诸如用户SID,可被自动输入而无需另外的用户输入。或者,查询串的某些部分,诸如附加搜索准则可由用户在请求搜索时指定,或者可作为计算设备的配置的一部分被预定。
在判别框606处,进行测试以确定是否有额外的计算设备连接到网络100。在本发明的一个说明性实施例中,对额外计算设备的测试可对应于对连接到网络的每一计算设备的轮询。或者,对额外计算设备的测试可限于由系统管理员或用户定义的计算设备的一个特定子集。如果网络内有额外计算设备,则在框608处,与用户相关联的计算设备向该额外计算设备发送内容查询。在本发明的一个说明性实施例中,由于用户的安全配置文件,例如SID被复制到每一计算设备,因此内容查询可以是相同的。或者,如果用户的安全配置文件改变,则每一内容查询可以是独特的以适应各种用户安全标识符。框606和608将重复,直到查询了网络100内的所有计算设备或计算设备的子集。根据本发明的一个说明性实施例,查询结果以内容标识符以及诸如统一名称位置(“UNC”)路径等用于定位该内容的路径的形式被发送到作出请求的计算设备。如上所述,内容无需被移至该作出请求的计算设备。另外,作出请求的计算设备无需制作该内容的副本。此外,在本发明的一个说明性实施例中,计算设备可在诸如RAM或高速缓存等存储器中维护先前从远程计算机接收到的内容请求回复的副本。除了从远程计算设备发出新内容请求之外,计算设备还可取回对同一远程计算设备的先前已接收的内容请求,并开始处理该先前已接收的内容请求。一旦接收到新的内容请求,计算设备就可更新该响应并储存新结果以供随后使用。
一旦查询了所有联网的计算设备,在判别框610处,进行测试以确定是否有当前不可用的任何先前联网的计算设备。本领域的技术人员将理解,任意数目的计算设备可能临时不可用,诸如被断电、在无线通信范围之外、或当前未对接到网络连接。如果有当前不可用的任何先前联网的计算设备,则在框612处,该计算设备试图取回对该不可用计算设备的先前已储存的内容请求结果。
一旦查询了所有计算设备,在框614处,作出请求的计算设备合并内容查询结果作为聚集列表。在本发明的一个说明性实施例中,该计算设备可过滤或以其它方式处理合并结果。另外,该计算设备可归档、高速缓存或以其它方式储存合并结果以在随后的聚集列表创建中使用。在框616处,生成合并内容标识符视图并将其显示给用户以供操纵。在本发明的一个说明性实施例中,合并的结果以包括来自所有计算设备的内容的平面视图表示给用户。此外,在该说明性实施例中,内容的起源最初不被显示给用户。然而,相关领域的技术人员将理解,作出请求的计算设备可执行附加过滤或组织来将匹配内容显示给用户。例如,作出请求的计算设备可按照各种属性,诸如数据大小、数据类型、标题、日期准则等来排序匹配内容。此外,内容的起源的位置可作为初始视图的一部分或作为用户请求上可用的附加数据的一部分被直接提供给用户。再者,在计算设备之一不可用的情况下,合并视图可用诸如透明图标等特殊视觉提示来表示给用户,该特殊视觉提示向用户指示该内容可能储存在不可用计算设备上但是当前不能访问。在另一说明性实施例中,计算设备可利用聚集视图的先前储存的记录,并将其与当前聚集视图进行比较。计算设备然后可指示哪些文件已被修改、移除或添加。在框618处,例程600终止。
图7A-7D是示出根据本发明的一个说明性实施例的用于以聚集列表视图来显示合并内容标识符的各种屏幕显示的框图。参考图7A,屏幕显示700可包括允许用户选择感兴趣的各种文件位置的第一显示部分702。屏幕显示700还可包括用于显示储存在所选文件空间中的特定内容的第二显示部分704。参考先前图2-5的示例,如果用户要通过操纵对应于“我的文档”的图形图标706,或启动对查看对应于当前用户的所有文件的请求来启动聚集视图请求,则计算设备将执行例程600。所得的三个文件110、112、114然后在第二显示部分704中向用户显示,而无需用户了解内容的来源。与其形成对比,在传统文件系统管理下,用户需要单独访问每一计算设备文件系统以标识感兴趣的每一特定文件的位置。例如,如果文件110、112和114分别对应于图标708、710和712,则用户通常需要单独访问每一图标来查看由聚集视图创建的相同文件。
参考图7B,屏幕显示700的第二部分中的一个或多个内容标识符可包括协助用户的视觉提示。例如,如果计算设备当前未连接到网络,且作出请求的计算设备利用了先前高速缓存的或归档的内容请求,则该内容可如对文件112所示的在视觉上作出区分。在本发明的一个说明性实施例中,不可用内容可用虚线边框和/或以半透明方式来显示。在另一示例中,由计算设备确定为自从前一聚集视图请求以来已被修改的内容可如对文件114所示地向用户高亮显示。在本发明的一个说明性实施例中,修改的数据可在屏幕显示700上高亮显示。
参考图7C和7D,计算设备可自动排序合并的匹配内容请求。另外,计算设备可获得排序合并的匹配内容请求的用户输入。在本发明的一个说明性实施例中,合并的匹配内容可根据内容的位置来分组。参考图7C,屏幕显示700可包括指示位置的标识的附加标识符714、716、718。也可在屏幕显示700上显示附加的存储位置级别。在本发明的另一实施例中,合并的匹配内容可根据数据的各种属性来分组。参考图7D,屏幕显示可包括显示数据的标题、存储中的数据的大小以及数据文件的类型的列表视图。如果数据要如图7D所示按照大小来排序,则文件A 720将在列表的顶部,之后是文件C 722和文件B 724。在该说明性实施例中,用户可通过操纵屏幕显示700来改变排序准则。尽管图7C和7D示出了各种排序示例,但相关领域的技术人员将理解,其它排序准则和/或屏幕显示也被包括在本发明的范围之内。
参考图8,将描述用于操纵聚集视图中的内容的例程800。在框802处,获得操纵显示在聚集视图中的内容的请求。相关领域的技术人员将理解,对内容的操纵可包括用主机软件应用程序打开数据文件、修改内容、删除内容、复制内容和/或移动内容。在框804处,作出请求的计算设备从本地安全信息数据库108中获得安全标识符。
在判别框806处,进行测试以确定所选内容是否为本地储存的。如果内容是本地储存的,则在框808处,该计算设备用本地安全信息来处理该请求以确定用户是否被授权操纵所选内容。如果内容不是本地储存的,则在判别框810处,进行测试以确定计算设备是否本地维护了所请求数据的副本。在本发明的一个说明性实施例中,该计算设备可在诸如计算设备高速缓存等易失性存储器中维护先前访问的文档的副本。如果文件的副本本地可用,则例程800前进到框808以如上所述用本地安全信息来处理该请求。如果未本地维护所请求文件的副本,则在框812处,作出请求的计算设备将特定用户的安全信息作为令牌连同操纵内容的请求一起发送到实际储存该内容的计算设备。接收计算设备然后利用该安全令牌来处理该请求并发送响应。在框814处,发送计算设备从接收计算设备接收响应。如果在框808或框812处操纵被授权,则在框816处允许用户操纵内容。例程800在框818处终止。
除了如先前所讨论的对联网计算机系统(例如,图2所示的网络100)中的分布式存储查询内容(数据对象)之外,用户通常使用几个计算机系统。例如,用户可在家中或在工作地点具有台式计算机,并且具有用户在旅行时使用的膝上型计算机。在这种情况下,用户可创建或修改一个计算机系统上的文件。用户通常希望将(用户在一个计算机系统上创建或修改的)文件与另一计算机系统同步。以下本发明的说明性实施例支持对相关联用户情形的数据对象同步。
图9示出了根据本发明的一个说明性实施例的用于文件或其它内容的对等同步的系统和方法可在其中操作的环境。用户可使用或访问一组用于商业、个人或其它用途的多个计算机、客户机或其它机器,包括说明性地示为台式计算机的第一机器902,以及说明性地示为膝上型计算机或其它移动计算机的第二机器914。可同步其它计算机、客户机或其它机器,包括例如启用网络的蜂窝电话、启用网络的电子邮件客户机、启用网络的个人数字助理、启用网络的媒体播放器或其它硬件。在所示的操作中,第一机器902和第二机器914可经由诸如通用串行总线连接、火线(FireWire)TM连接、蓝牙(BlutTooth)TM连接、无线保真(WiFi)TM连接或其它有线、无线、光学或其它信道或连接来连接。根据本发明的各说明性实施例,连接918可以如在局域网(LAN)中那样被连续地维持,或者如在某些实施例中在两台或多台参与机器之间间歇地连接。
根据本发明的各说明性实施例,第一机器902可生成并呈现用户界面904,诸如图形用户界面、命令行界面、激活语音的或其它界面,以允许用户访问应用程序、文件、操作系统和其它资源。根据如图所示的说明性实施例,用户可访问同步界面906来激活、选择和管理文件或其它同步功能。同步界面906可以主存在第一机器902的操作系统内,或者在其它实施例中可以被结合在一个或多个应用程序、模块或其它资源中。根据如图所示的说明性实施例,同步界面906可向用户呈现用于标识、激活和管理第一机器902和第二机器914或其它机器或目标之间的同步事件的选择和选项。一般而言,这些同步活动可涉及参与机器之间所选或所发现的文件、文件夹、目录、卷、盘或其它内容、信息、存储或媒体的同步。
根据本发明的各说明性实施例,用户可操纵同步界面906,来选择一组经同步的文件926以便跨参与机器或系统来同步或漫游。该组经同步的文件926例如可包含从储存在第一机器902上的一组本地文件912内,以及从储存在第二机器914上的另一组本地文件916内,或其它文件或信息标识的文件或其它内容。该组经同步的文件926可由主存在第一机器902中的同步引擎908标识、储存和管理。同步引擎908可与在第一机器902内维护的文件系统日志910通信,以跟踪并记录被指定来同步或在该组经同步的文件926内漫游或其它的文件、文件夹、目录、卷或其它内容或信息的状态。在说明性实施例中,第二机器914或其它或另外的参与机器同样可维护同步引擎908、文件系统日志910和其它文件管理资源的另一实例的形式的相同或相似的逻辑,在各实施例中,其每一个同样可被主存在操作系统或其它资源中。
根据本发明的各说明性实施例,该组经同步的文件926也可被配置成包括用户最常使用的目录、文件夹或其它资源,例如,诸如我的文档、我的音乐、桌面、收藏夹等文件夹或其它文件或源的示例性文件夹。常用目录、文件夹或其它源可被配置成向同步引擎908或其它资源自动宣告其对于同步的可用性,以便于由用户通过接受或高亮显示这些源和同步目的地来进行选择或激活。可选择或配置不是一个用户专用的文件夹、目录或其它源来进行同步,例如对同步系统全局的文件夹或其它内容,包括面向任务的项目文件夹、诸如c:\users\public形式的文件夹等公共文件夹、或其它文件夹、目录或其它源。在本发明的这些和其它实施例中,除了手动指定内容之外或作为其替代,文件夹、目录和其它源可由任何一台或多台机器上的发现逻辑来自动发现。同样,在本发明的某些实施例中,除了手动注册目的地机器的地址或标识符之外或作为其替代,可以是供包括在该组参与机器内的候选者的机器也可使用诸如可检测局域网上连接的机器的逻辑或其它逻辑等发现逻辑来自动检测。
为了同步管理,第一机器902、第二机器914或其它机器中的同步引擎908可检测第一机器902、第二机器914或其它机器或硬件的连接状态来确定这些机器享有彼此之间或与其它参与硬件之间经由连接918或其它连接或信道的连通性的情况。例如,同步引擎908可建立通过第一机器902、第二机器914或其它参与机器的可用通信端口的连接,包括通过适当的防火墙资源的隧道。
当例如经由USB或无线连接建立了连通性时,第一机器902中的同步引擎908可认证各参与机器以确保文件同步被正确启动。当验证了经认证的连接时,第一机器902中的同步引擎108可启动各参与机器之间的自动文件漫游、映像制作或同步活动。例如,第一机器902中的同步引擎908可访问该组经同步的文件926以确定位于第一机器902上的哪些文件、文件夹、目录、卷或其它内容需要被传输到第二机器914,同样位于第二机器914上的哪些相似的内容需要被传输到第一机器902,以维护这些机器之间的一组相干或一致的文件或其它信息。
第一机器902中的同步引擎908由此可检查第一机器902的文件系统日志910或第二机器914的文件系统日志910以检查各参与机器上的文件和其它内容的状态、行为或历史。关于该组经同步的文件926的状态、行为、历史或其它元数据或信息不仅可包括指示文件的最近编辑、下载或访问的日期戳信息,而且还可包括诸如文件大小、文件类型、关于文件的先前版本或传输的信息以及其它信息等进一步的信息。
访问关于参与机器上的文件和其它内容的状态的这一和其它信息之后,第一机器的同步引擎908可在一个或多个位置中删除、复制、编辑、重新格式化、改变存储位置、或以其它方式操纵该组经同步的文件926。这些动作可被执行以确保在第一机器902、第二机器914和其它参与机器中维护了给定文件的同一版本。根据本发明的说明性实施例,第一机器902中的同步引擎可向经处理的文件应用增量同步逻辑,以使在各参与机器之间仅漫游自从最后一次同步或其它点以来改变的文件或文件部分。在涉及公司或其它组织LAN的本发明的说明性实施例中,系统管理员可将第一机器902或其它机器的同步引擎908设置为限制特定文件向特定用户的传播,或应用其它同步控制。当应用许可时,可以注意到许可应被安排为使得数据可正确地迁移到所有参与的机器以确保到所有必要目的地的连接路径。根据本发明的各实施例,其它配置也是可能的。
根据本发明的说明性实施例,用户、管理员或操作系统设置可将第一机器902的同步引擎908、第二机器914的同步引擎908或其它资源执行的同步管理、文件传输和其它活动设置为在期望的优先级上执行以作为后台任务来操作,或挂起并继续文件传输活动直到建立或重新建立了宽带连通性,或在其它时间或在其它条件下采取其它动作。根据本发明的说明性实施例,第一机器902、第二机器914或其它参与机器、客户机、设备或硬件例如可由域名服务(DNS)或其它地址或标识符来标识。第一机器902的同步引擎908、第二机器914的同步引擎908或其它同步引擎实例或逻辑可采用自动发现逻辑来检测其它参与机器何时出现在因特网或其它网络上,使得机器可在它们享有因特网或其它连通性的任何点处继续与其它机器的同步活动。
用户可从用户的一组参与机器的任何一个或多个中选择性地或任意地选择用户希望在这些机器之中复制、漫游或同步的文件或其它源内容而没有任何限制。此外,第一机器902、第二机器914和任何其它参与机器可在组的基础上共享一组经同步的文件926,但是这些机器无需直接连接到一起或同时连接在一起来执行本发明的同步操作。相反,同步活动可取决于每一机器或机器的子组或子网络的连接、网络和其它条件自动且有时机地发生。(然而,可以注意,在这些说明性实施例中,该组参与机器能够在总体或累积的基础上实现全桥接或连接的网络,即使机器、机器的子组或子网络在不同的时间、不同的地点或使用不同类型的网络连接来连接)。用户可选择指定位于第一机器902、第二机器914或其它机器上的所有文件来漫游或同步到另一参与机器,以在需要时实现对这些源文件的备份。
依照图10的本发明的说明性实施例,第一机器902的同步逻辑908、第二机器914的同步逻辑或其它逻辑或实例可结合执行文件传输和更新来应用版本管理逻辑1020。在如图所示的说明性实施例中,当同步逻辑908检测到文件的两个实例之间的版本冲突时(例如,准备较老的文件来盖写该同一文件的较新版本),版本管理逻辑1020可向用户呈现一对话框或查询以解决该冲突来重命名或移动过时的文件、替换该文件的另一版本、或采取其它动作。可检测到其它基于版本的和其它冲突。在某些实施例中,并非向用户呈现用于异常处理的丰富界面或除此之外,而是版本管理逻辑1020也可向冲突文件或数据应用自动规则或处理,诸如执行一比较功能来编辑或保存冲突文件、或以其它方式处理不同的版本。
再次可注意到,在本发明的说明性实施例中,诸如在图11中,两台以上机器可在同一自动基础上参与文件同步和相关功能。如图所示的机器集合可至少包括第一机器902、第二机器914、第三机器1122、第四机器1124或其它机器、客户机、计算机或设备来同步所选的文件或其它内容。在各说明性实施例中,机器可经由诸如图9所示的连接918等有线连接直接连接,或通过其它有线、无线或光学连接,包括用于启用网络的蜂窝电话的空中接口来连接。然而,用户可以用相对较小的配置工作来启动对所需文件的选择性同步,而不需要或不依赖于诸如因特网备份服务器等中间存储、逻辑或控制资源。本发明的各实施例因此增强了文件漫游操作的可靠性、速度和互操作性。
图12示出了根据本发明的各说明性实施例的总体文件共享和同步处理。在步骤1202中,处理可以开始。在步骤1204中,用户可启动或登录到第一机器902,诸如个人计算机、膝上型或移动计算机、启用网络的蜂窝电话或其它客户机、机器、硬件或设备。在步骤1206中,用户可选择或激活一组源文件、文件夹、目录或其它源文件、源位置或其它信息或内容,从而高亮显示第一机器902或其它位置上的一组文件。在步骤1208中,用户可指定一组经同步的文件926要在一组工作的计算机或其它机器之间自动同步和管理。在步骤1210中,可由同步引擎908或其它逻辑自动发现指定的一个或多个机器的网络连接状态。在步骤1212中,用户可选择,或者同步引擎908可检索所储存的对一个或多个目的地机器的指定来进行文件或其它数据同步。
在步骤1214中,可建立并向诸如第二机器914或其它计算机、机器、客户机或硬件等所选择的一个或多个机器认证诸如USB或其它有线或无线连接等连接918。在步骤1216中,同步引擎908或其它控制逻辑可启动第一机器902和第二机器914之间该组经同步的文件926的文件传输或其它内容传输。在步骤1218中,第一机器902或第二机器914中的任一个或两者的同步引擎908可向所传输的该组经同步的文件926或其它内容应用数字权限管理或保护逻辑。任何一个或多个参与机器的同步引擎908可自动寻找复制诸如音乐或其它媒体内容等文件或内容的授权或许可证。在授权被拒绝的情况下,可操作的同步引擎908可从目标机器上删除未授权的一个或多个文件、通知用户未授权的副本已被移除、或采取其它动作。
在步骤1220中,第一机器902或第二机器914中的任一个或两者的同步引擎908可向传输的该组经同步的文件926或其它内容应用版本管理逻辑1020以捕获文件的不一致版本、尝试在较新版本上复制的文件的过时版本的实例,或检测其它版本冲突。版本管理逻辑1020可向用户呈现一对话框以获得其优选的对版本冲突的处置,诸如漫游文件的最新版本、重命名或备份文件的过时版本、对冲突版本替换其它文件、或采取其它动作。在步骤1222中,一个或多个参与机器中的同步引擎908或其它逻辑可更新该对应的本地机器或硬件中的文件系统逻辑910。在步骤1224中,处理可重复、返回到前一处理点、跳转到另一处理点或结束。
在本发明的各说明性实施例中,用户可向联网计算机系统查询数据对象以及启动在网络计算机系统中的多个计算机上对所选数据对象的同步。(数据对象是可单独寻址的信息单元。数据对象的示例包括文件、文件夹、目录和电子媒体。)如将讨论的,本发明的各说明性实施例支持可在多个计算机上复制数据对象的用户情形,其中用户向网络计算机系统查询指定的数据对象。
图13A-C示出了根据本发明的一个实施例对计算机网络中的分布式存储的查询结果的情形。图13A-C中的情形对应于由个人计算机1301、1303、1305和1307构成的计算机网络。作为一个示例,当计算机1307的用户在用户的联网台式和膝上型计算机上从家里工作时,该用户查询在2004年6月17日创建的文件。在该示例中,文件A和B是用户在计算机1301上创建的文档,文件C和D是用户在计算机1303上创建的文档,而文件E和F是具有音乐内容的文档。文件X、Y和Z(分别与计算机1301、1303和1305相关联)是在不同于2004年6月17日的日期创建的。
参考图13A,计算机1301储存文件A和B,计算机1303储存文件C和D,而计算机1305储存E和F。计算机1307处的用户生成查询网络1300的请求以获得在2004年6月17日创建的数据对象的标识。计算机1307随后将带有日期准则(2004年6月17日)的查询请求发送给计算机1301、1303和1305。因此,计算机1307从计算机1301接收到带有文件A和B的标识的响应,从计算机1303接收到带有文件C和D的标识的响应,并从计算机1305接收到带有文件E和F的标识的响应。计算机1307组合来自各响应的对指定数据对象的标识,并将查询结果呈现给用户。
图13B所示的情形类似于图13A,不同之处在于文件E和F被复制到计算机1301。(文件的复制先前已讨论,例如,图12。)由此,计算机1301储存文件A、B、E和F,计算机1303储存文件C和D,而计算机1305储存文件E和F。计算机1307处的用户生成查询网络1300的请求以获得在2004年6月17日创建的数据对象的标识。计算机1307然后将带有日期准则(2004年6月17日)的查询请求发送给计算机1301、1303和1305。因此,计算机1307从计算机1301接收到带有文件A、B、E和F的标识的响应,从计算机1303接收到带有文件C和D的标识的响应,并从计算机1305接收到带有文件E和F的标识的响应。计算机1307组合(合并)来自各响应的对指定数据对象的标识符,并将查询结果呈现给用户。然而,如将在图14中更详细讨论的,计算机1307确定由计算机1301标识的文件E和F是与计算机1307标识的相同的文件E和F。因此,显示给用户的查询结果仅包含了文件E和F一次。由此,查询结果指示文件A、B、C、D、E和F而非文件A、B、E、F、C、D、E和F。复制文件通常具有在各目标机器上都相同的名称。然而,本发明的各实施例支持具有不同名称的复制文件。
图13C所示的情形类似于图13A,不同之处在于文件E和F被复制到计算机1301,而文件A被复制到计算机1307。由此,计算机1301储存文件A、B、E和F,计算机1303储存文件C和D,计算机1305储存文件E和F,而计算机1307储存文件A。计算机1307处的用户生成查询网络1300的请求以获得在2004年6月17日创建的数据对象的标识。计算机1307随后将带有日期准则(2004年6月17日)的查询请求发送给计算机1301、1303和1305。然而,计算机1307已具有复制文件A,并且不向计算机1301查询文件A。(在一个实施例中,当计算机1307查询结果时,计算机1307首先检查其高速缓存的结果。如果计算机1307找到一文件,则计算机1307修改对机器1301的传出查询,使得仅向机器1301查询计算机1307上不存在的文件。)因此,计算机1307从计算机1301接收到带有文件B、E和F的标识的响应,从计算机1303接收到带有文件C和D的标识的响应,并从计算机1305接收到带有文件E和F的标识的响应。计算机1307组合来自各响应的对指定数据对象的标识,并将查询结果呈现给用户。
图14示出了根据本发明的一个说明性实施例的支持对具有分布式存储的联网计算机的查询的流程图1400。在步骤1401中,用户的计算机(例如,计算机1307)通过用户界面(例如,如图15所示的用户界面1507)接收查询请求。在步骤1403中,用户的计算机(本地计算机)确定用户计算机上的复制数据对象,并且不向联网计算机(远程计算机)查询储存在用户计算机上的复制数据对象。因此,可增强执行查询的性能。在步骤1405中,用户的计算机向联网计算机查询其余的数据对象。用户的计算机在步骤1407中从联网计算机接收响应。在步骤1409中,仅标识指定数据对象一次。步骤1411合并储存在联网计算机上的指定数据对象以及储存在用户计算机上的数据对象的标识。如由步骤1411确定的查询结果可通过用户界面向用户显示。
除了过程1400提供联网计算机系统中的指定对象的单个视图之外,过程1400还可被扩展,使得未储存在联网计算机上的指定对象可被复制到联网计算机。例如,如图13C所示,查询结果示出文件A、B、C、D、E和F,而仅文件A被储存在计算机1307处。然后可启动文件同步,使得文件B、C、D、E和F也被储存在计算机1307上。
图15示出了根据本发明的一个说明性实施例的查询具有通过网络1513分布式存储的联网计算机的计算机系统1500。在本发明的一个说明性实施例中,计算机系统1500基于如图1所示的计算机平台。计算机系统包括内容查询服务模块1501、复制数据结构1503、对等状态数据结构1505、用户界面1507、网络接口1509和高速缓冲存储器1511。用户界面1507可接口到用户输入设备(例如,键盘)和用户输出设备(例如,显示设备)。
当用户通过用户界面1507请求时,内容查询服务模块1501执行如图14所示的过程1400。内容查询服务模块1501查询联网计算机并通过网络接口1509和网络1513从联网计算机接收响应。如果内容查询服务模块1501确定联网计算机是离线的,则内容查询服务模块1501制止向离线的联网计算机发送查询。在这一情况下,内容查询服务模块1501可向高速缓冲存储器(本地易失性存储器)1511查询来自离线的联网计算机的最近访问的数据对象。
并且,内容查询服务模块1501还在复制数据结构1503中储存关于复制数据对象的信息。例如,如果储存在计算机系统1500上的文件也在联网计算机上复制,则内容查询服务模块1501不向联网计算机查询复制数据对象。在本发明的一个实施例中,内容查询服务模块1501使用搜索索引来确定文件驻留在何处。如果文件被本地复制,则本地机器上的搜索索引将包含该文件的名称。
当内容查询服务模块1501从联网计算机接收到响应时,内容查询服务模块1501合并所选数据对象的标识,并可通过用户界面1507向用户显示查询结果。
如本领域的技术人员可以理解的,具有包含用于控制计算机系统的指令的相关联的计算机可读介质的计算机系统可用于实现此处公开的说明性实施例。
尽管以对结构特征和/或方法动作专用的语言描述了本主题,但是可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求书的示例形式来公开的。