CN107077483A - 共享文件夹和文件的同步 - Google Patents
共享文件夹和文件的同步 Download PDFInfo
- Publication number
- CN107077483A CN107077483A CN201580051050.5A CN201580051050A CN107077483A CN 107077483 A CN107077483 A CN 107077483A CN 201580051050 A CN201580051050 A CN 201580051050A CN 107077483 A CN107077483 A CN 107077483A
- Authority
- CN
- China
- Prior art keywords
- file
- local
- hash
- shared
- folder
- 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.)
- Granted
Links
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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- 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/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
Abstract
一种使共享文件夹和文件在远程文件系统和本地文件系统内同步的方法包括确定远程文件系统状态和本地文件系统状态。所述远程文件系统状态包括共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式的远程实例的远程散列值。所述本地文件系统状态包括共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式的本地实例的本地散列值。所述方法还包括将所述远程文件系统状态和所述本地文件系统状态进行比较来确定所述远程文件系统状态和所述本地文件系统状态内散列值的任何差异;以及使在所述远程文件系统状态和所述本地文件系统状态中具有不同值的任何共享文件夹、共享子文件夹或共享文件在所述本地文件系统和所述远程文件系统上同步。
Description
背景
随着云计算的增加,用户为与远程计算机或一系列远程计算机相关联的远程存储器内的文件和文件夹作备份的能力显著地增加。在某些情况下,可通过其他计算装置将对远程存储器内的文件和文件夹的访问授权给另外的用户。因此,文件和文件夹可通过远程存储器在多个用户和用户装置上共享。
此外,单个用户可下载远程存储的特定文件的副本,编辑所述特定文件并且将所编辑的文件上传给远程存储器。所编辑的文件之后可通过多个用户的特定计算装置与所述多个用户共享。
附图简述
参考附图来描述详细的说明。在附图中,参考数字最左侧的数字标识首次出现该参考数字的附图。不同附图中的相同参考数字指示类似或相同项目。
图1示出用于使共享文件夹和文件同步的系统。
图2示出示例性文件系统。
图3示出示例性文件夹。
图4示出将文件和主散列列表上传到远程文件系统的示例性过程的流程图。
图5示出用于使共享文件夹和文件同步的示例性过程的流程图的第一部分。
图6示出用于使共享文件夹和文件同步的示例性过程的流程图的第二部分。
图7示出用于使来自本地文件系统的文件同步的示例性过程的流程图。
图8示出用于使来自远程文件系统的文件同步的示例性过程的流程图。
图9示出用于遍历文件夹树和子文件夹树以定位文件变化用于同步的示例性过程的流程图。
详述
本文描述的是使共享文件夹和文件在远程文件系统与多个本地文件系统之间同步的系统和过程。在特定方面,本共享文件夹和文件同步系统是基于状态的系统,所述基于状态的系统可确定一个或多个本地文件系统的当前状态和远程文件系统的当前状态。然后,可将每个本地文件系统的当前状态与远程文件系统的当前状态进行比较来确定差异是否存在。如果差异存在,那么共享文件夹和文件同步系统可确定在特定本地文件系统、远程文件系统或两者处可能所必需的内容的变化,以便使那些文件系统中的每一个包括相同内容并且是彼此的复本。本公开的技术的一些实施方案可例如在文档协作环境中使用。
本地文件系统和远程文件系统可包括存储在特定共享数据结构中的内容。所述共享数据结构可包括共享文件夹、共享子文件夹、共享文件、共享子级文件、共享快捷方式或其组合。每个共享文件夹可包括共享文件夹的本地实例和共享文件夹的远程实例,所述本地实例和所述远程实例在执行同步之后应基本上是相同的并且包括相同内容。每个共享子文件夹可包括共享子文件夹的本地实例和共享子文件夹的远程实例,所述本地实例和所述远程实例在执行同步之后应基本上是相同的并且包括相同内容。此外,每个共享文件可包括共享文件的本地实例和共享文件的远程实例,所述本地实例和所述远程实例在执行同步之后应基本上是相同的并且包括相同内容或数据。此外,每个共享子级文件可包括共享子级文件的本地实例和共享子级文件的远程实例,所述本地实例和所述远程实例在执行同步之后应基本上是相同的并且包括相同内容或数据。最后,此外,每个共享快捷方式可包括共享快捷方式的本地实例和共享快捷方式的远程实例,所述本地实例和所述远程实例在执行同步之后应基本上是相同的并且包括相同内容或数据。
共享文件夹和文件同步系统可利用本地安装在每个用户或客户端处的本地同步模块、计算装置和远程或分布式计算资源处的远程同步模块。本地同步模块和远程同步模块可与彼此通信以便交换关于每个本地文件系统和远程文件系统的状态的信息,以便使文件编辑在整个共享文件夹和文件中保持最新并且在本地文件系统和远程文件系统中的每一个中保持同步。
在一方面,替代监视存储在特定共享文件夹和共享子文件夹内的实际内容以便确定特定共享文件或其中的内容是否已经被更新、编辑、删除或以其他方式改变,所述系统可监视与每个共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式相关联的属性。所述属性可以是与特定文件夹、特定子文件夹、特定文件、特定子级文件或特定快捷方式相关联的唯一标识符。当存储在文件夹和子文件夹内的特定文件、子级文件和快捷方式的内容被更改时,所述属性可被重新计算并且重新记录至主列表。
通常,用于使共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式同步的方法可包括可包括确定远程文件系统状态和确定本地文件系统状态。此外,所述方法可包括将远程文件系统状态和本地文件系统状态进行比较来确定共享文件夹的远程实例、共享子文件夹的远程实例、共享文件的远程实例、共享子级文件的远程实例或共享快捷方式的远程实例是否包括与共享文件夹的对应的本地实例、共享子文件夹的对应的本地实例、共享文件的对应的本地实例、本地共享子级文件的对应的实例或本地共享快捷方式的对应的实例的本地文件系统属性不同的远程文件系统属性。可使远程文件系统属性与本地文件系统属性不同的共享文件夹、共享子文件夹、共享文件、共享子级文件或共享快捷方式同步,例如如下文更加详细所述。
在特定方面,远程文件系统属性可包括被分配给共享文件夹的远程实例的远程文件夹值、被分配给共享子文件夹的远程实例的远程子文件夹值、被分配给共享文件的远程实例的远程文件值、被分配给共享子级文件的远程实例的远程文件值或被分配给共享快捷方式的远程实例的远程文件值。更具体地,远程文件夹值可包括远程文件夹散列,远程子文件夹值可包括远程子文件夹散列,远程文件值可包括远程文件散列,远程子级文件值可包括远程子级文件散列,并且远程快捷方式值可包括远程快捷方式散列。可基于远程文件系统的远程散列表来确定远程文件夹散列、远程子文件夹散列、远程文件散列、远程子级文件散列和远程快捷方式散列。
在另一方面,本地文件系统属性可包括被分配给共享文件夹的本地实例的本地文件夹值、被分配给共享子文件夹的本地实例的本地子文件夹值、被分配给共享文件的本地实例的本地文件值、被分配给共享子级文件的本地实例的本地子级文件值或被分配给共享快捷方式的本地实例的本地快捷方式值。此外,本地文件夹值可包括本地文件夹散列,本地子文件夹值可包括本地子文件夹散列,本地文件值可包括本地文件散列,本地子级文件值可包括本地子级文件散列,并且本地快捷方式值可包括本地快捷方式散列。可基于本地文件系统的本地散列表来确定本地文件夹散列、本地子文件夹散列、本地文件散列、本地子级文件散列和本地快捷方式散列。
例如,某些数据管理系统可利用散列表或散列映射以便追踪特定文件存储在存储器内的位置。每个散列提供在存储器内特定文件的位置。文件夹可包括文件夹散列。子文件夹可包括子文件夹散列。此外,文件可包括文件散列。子级文件可包括子级文件散列并且快捷方式可包括快捷方式散列。
子文件夹散列可以是与存储在子文件夹中的文件相关联的文件散列、与存储在子文件夹内的任何子级文件相关联的子级文件散列和与存储在子文件夹内的任何快捷方式相关联的快捷方式文件散列的函数。文件夹散列可以是与其中的子文件夹相关联的子文件夹散列、与子文件夹内的文件相关联的文件散列、子文件夹内的子级文件(如果存在的话)的子级文件散列、子文件夹内的快捷方式(如果存在的话)的快捷方式文件散列和与文件夹内的文件相关联的文件散列的函数。文件散列、子级文件散列和/或快捷方式散列的任何变化使被分配给在其中存储文件、子级文件和/或快捷方式的子文件夹的子文件夹散列改变。进而,将文件夹散列分配给在其中子文件夹响应于新的子文件夹散列而改变的文件夹。
因此,通过监视被计算并且被分配给每个文件夹、子文件夹、文件、子级文件和/或快捷方式的散列的状态,共享文件夹和文件同步系统可快速地查明哪些文件夹、子文件夹、文件、子级文件、快捷方式或其组合已经被看到其中的数据的改变,而实际上无需监视文件夹、子文件夹、文件、子级文件和/或快捷方式的内容。例如,同步模块(例如,本地同步模块、远程同步模块或其组合)可将散列的当前列表与特定文件系统的散列的最近列表进行比较。
同步模块可快速地遍历当前文件夹散列以确定哪些文件夹散列(如果有的话)与每个文件夹的最近记录的文件夹散列不同。不同的任何文件夹散列向同步模块提供如下指示:文件夹内的至少一个文件、至少一个子级文件或至少一个快捷方式或文件夹的子文件夹内的至少一个文件、至少一个子级文件或至少一个快捷方式已经被更改(例如,更新、编辑、删除、创建等)。对于具有与主散列列表上的文件夹散列不同的文件夹散列的任何文件夹,同步模块可遍历与存储在文件夹内的文件、子级文件和快捷方式相关联的文件散列、子级文件散列或快捷方式散列以确定文件、子级文件和/或快捷方式中的哪一个已经被更改。
此外,对于具有新的或不同文件夹散列的每个文件夹,同步模块可遍历与文件夹内的子文件夹相关联的子文件夹散列以确定哪些子文件夹(如果有的话)包括已经被更改的文件、子级文件和/或快捷方式。然后,对于具有不同子文件夹散列的任何子文件夹,同步模块可遍历与存储在子文件夹内的文件、子级文件散列和快捷方式相关联的文件散列、子级文件散列和/或快捷方式散列以确定子文件夹内的哪些文件、子级文件和/或快捷方式具有不同散列。包括不同散列的任何文件、子级文件和/或快捷方式被认为已经被更改并且使该特定文件、子级文件和/或快捷方式同步以包括最近动作。动作可包括对文件或文件内容的更新、编辑、添加、删除或任何其他变化。
本文所描述的一个或多个实例提供用于使共享文件夹和文件在多个本地文件系统和一个或多个远程文件系统上同步的过程。在各种实例中,一个处理单元或多个单元可通过来自模块或API的编程而被配置以执行本文所述的技术或过程。所述处理单元或多个单元可包括GPU、现场可编程门阵列(FPGA)、另一类别的数字信号处理器(DSP)或在一些实例中可由CPU驱动的其他硬件逻辑部件中的一个或多个。例如而非进行限制,可使用的说明性类型的硬件逻辑部件包括专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑装置(CPLD)等。
通常,共享文件夹和文件同步系统可包括在其上具有本地同步模块和本地文件系统的一个或多个本地计算机可读介质以及在其上具有远程同步模块和远程文件系统的一个或多个远程计算机可读介质。此外,共享文件夹和文件同步系统可包括可操作地耦接到本地计算机可读介质、远程计算机可读介质或其组合的处理单元。所述处理单元可适于执行本地同步模块、远程同步模块或其组合。
此外,本地同步模块、远程同步模块或其组合可被配置来确定与远程文件系统内的共享数据结构的远程实例相关联的远程文件系统属性并且确定与本地文件系统内的共享数据结构的本地实例相关联的本地文件系统属性。本地同步模块、远程同步模块或其组合还可被配置来确定远程文件系统属性是否与本地文件系统属性不同并且使远程文件系统内的共享数据结构的远程实例与本地文件系统内的共享数据结构的本地实例选择性地同步,因此共享数据结构内的内容在远程文件系统和本地文件系统处相同。
如上文所述,共享数据结构可包括共享文件夹、共享子文件夹、共享文件、共享子级文件、共享快捷方式或其组合。远程文件系统属性可包括从与远程文件系统相关联的远程散列表检索的远程文件夹散列、远程子文件夹散列、远程文件散列、远程子级文件散列或远程快捷方式散列。此外,本地文件系统属性可包括从与本地文件系统相关联的本地散列表检索的本地文件夹散列、本地子文件夹散列、本地文件散列、本地子级文件散列或本地快捷方式散列。
现参考图1,共享文件夹和文件同步系统的详细实例被示出并且通常由100指代。如所描绘,共享文件夹和文件同步系统100可包括至少一个网络102。例如,网络102可包括公共网络(诸如互联网)、私用网络(诸如公共机构和/或个人内联网)或私用网络和公共网络的某种组合。网络102还可包括任意类型的有线网络、无线网络或其组合。此外,无线网络可例如包括卫星网络、蜂窝网络(例如,3G、4G等)、Wi-Fi网络、WiMax网络、另一种无线网络或其组合。此外,有线网络可包括通过Cat-5电缆、双绞线电话线、同轴电缆、光纤电缆或其组合连接的以太网。在另一种实现中,网络102可以是广域网(WAN)、局域网(LAN)或其组合。此外,网络102可包括简易老式电话业务(POTS)网络。
网络102可利用通信协议,所述通信协议包括基于分组和/或基于数据报的协议,诸如互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。此外,网络102还可包括促进网络通信和/或形成网络的硬件基础的多个装置,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干网装置等。
在一些实例中,网络102还可包括能够连接到无线网络的一个或多个装置,诸如无线接入点(WAP)。另外的实例通过在各种电磁频率(例如,无线电频率)上发送和接收数据的WAP(包括支持电气与电子工程师学会(IEEE)802.11标准(例如,802.11g、802.11n等)及其他标准的WAP)支持连接性。
如图1中进一步所示,共享文件夹和文件同步系统100还可包括连接到网络102的第一分布式计算资源104、第二分布式资源106和第N分布式资源108。在各种实例中,分布式计算资源104、106、108可包括在集群或其他分组配置中操作以共享资源、平衡负载、增加性能、提供故障切换支持或冗余或出于其他目的的一个或多个计算装置。分布式计算资源104、106、108还可包括可属于各种分类或类别的装置(诸如传统服务器类型装置、台式计算机类型装置、移动类型装置、专用目的类型装置、嵌入式类型装置和/或可穿戴类型装置)的计算装置。
因此,分布式计算资源104、106、108可包括各种装置类型并且不限于特定类型的装置。分布式计算资源104、106、108可表示但不限于台式计算机、服务器计算机、web服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机、可穿戴式计算机、植入式计算装置、电信装置、汽车计算机、网络使能的电视机、瘦客户端、终端、个人数据助理(PDA)、游戏控制台、游戏装置、工作站、媒体播放器、个人录像机(PVR)、机顶盒、摄像机、用于包括在计算装置中的集成部件、用具或任意其他类型的计算装置。
图1还示出关于第N分布式计算资源108的细节。应理解,第一分布式计算资源104和第二分布式计算资源106可以与第N分布式计算资源108基本相同的方式配置并且可结合第N分布式计算资源108包括本文所描述的部件中的全部或任意的组合。
如图所示,第N分布式计算资源108可以是任意计算装置,并且第N分布式计算资源108可包括例如通过总线114可操作地或电连接到计算机可读介质112的一个或多个处理单元110。总线114可包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线和任何各种本地、外围和/或独立总线中的一个或多个。
第N分布式计算资源108还可包括一个或多个网络接口116以能够通过网络102在第N分布式计算资源108与其他计算资源或装置之间通信。网络接口116可包括一个或多个网络接口控制器(NIC)或其他类型的收发器装置以通过网络发送和接收通信。在特定方面,如图1中所示,可执行指令可存储在计算机可读介质112上,并且那些指令可例如包括操作系统118、远程共享文件夹和文件同步模块120以及可由一个或多个处理单元110加载和执行的其他模块、程序或应用。
可替代地或此外,本文所描述的功能性可至少部分地由一个或多个硬件逻辑部件(诸如加速器)执行。例如而非进行限制,可使用的说明性类型的硬件逻辑部件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑装置(CPLD)等。例如,加速器可表示混合装置,诸如来自ZYLEX或ALTERA的包括嵌入FPGA架构的CPU核心的混合装置。
第N分布式计算资源108的计算机可读介质112还可包括远程文件系统122或被划分成具有远程文件系统122,在所述远程文件系统122中可存储多个文件夹、子文件夹、文件或其组合。多个文件夹、子文件夹和文件可包括多个共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式。更具体地,多个共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式可包括多个共享文件夹的远程实例、多个共享子文件夹的远程实例和多个共享文件的远程实例。
具体地,远程文件系统122可利用密码散列函数或其他散列函数以存储和检索存储在远程文件系统122内的文件和数据。所述散列函数可包括散列函数的衍生物,诸如MD2、MD4、MD5、MD6、SHA-0、SHA-1、SHA-2、SHA-3或其组合。在另一方面,散列函数可包括原始完整性校验消息摘要(RIPEMD)散列函数、RIPEMD-160或其组合。在下文所描述的图2和图3提供关于可在远程文件系统122内找到的示例性文件系统和示例性文件夹的更多细节。
图1进一步指示计算机可读介质112可包括存储在其上的主散列列表124。如本文所述的主散列列表124可包括文件夹散列、子文件夹散列和文件散列的列表并且可用来与之比较文件夹散列、子文件夹散列和文件散列的当前状态,以便确定自最后的主散列列表被计算和记录以来,文件夹、子文件夹和/或文件内的内容是否已经改变。
为了简单起见,可通常与计算装置(诸如第N分布式计算资源108)相关联或随所述计算装置包括的其他部件或特征从图1的第N分布式计算资源108的描绘中省略。这些其他部件或特征可包括但不限于A/C电源、D/C电源、各种连接器端口、各种线、各种LED指示器、扬声器、外壳、底盘、风扇、散热器、输入装置、输出装置、显示装置等。
图1还指示共享文件夹和文件同步系统100可包括第一客户端计算装置130、第二客户端计算装置132和第N客户端计算装置134。客户端计算装置130、132、134可属于多种分类或类别的装置,所述多种分类或类别的装置可与分布式计算资源104、106、108相同或不同。这些分类或类别的装置可包括传统的客户端类型装置、台式计算机类型装置、移动类型装置、专用类型装置、嵌入式类型装置和/或可穿戴类型装置。此外,客户端计算装置130、132、134可包括多种装置类型并且不限于任何特定类型的装置。
例如,客户端计算装置130、132、134还可包括但不限于:计算机导航类型客户端计算装置,诸如基于卫星的导航系统(包括全球定位系统(GPS)装置)和其他基于卫星的导航系统装置;电信装置,诸如移动电话、平板计算机、移动电话平板混合装置、个人数据助理(PDA)、膝上型计算机、其他移动计算机、可穿戴式计算机、植入式计算装置、台式计算机、个人计算机、汽车计算机、网络使能的电视、瘦客户端、终端、游戏控制台、游戏装置、工作站、媒体播放器、个人录像机(PVR)、电视机顶盒、数字录像机(DVR)、摄像机、用于包括在计算装置中的集成部件、用具或被配置来接收用户输入的任意其他类型的计算装置。
此外,实体(诸如用户)可与客户端计算装置130、132、134中的每一个或任一个相关联。所述实体可包括特定用户和一个或多个用户指定者(诸如用户助理、用户监管者、用户的配偶、用户的父母和/或用户授予其许可访问客户端计算装置130、132、134的另一个实体)。
图1还示出关于第N客户端计算装置134的细节。应理解,第一客户端计算装置130和第二客户端计算装置132可以与第N客户端计算装置134相同的方式配置并且可结合第N客户端计算装置134包括本文所描述的部件中的全部或任意的组合。
如所描绘,第N客户端计算装置134可以是任意计算装置,并且第N客户端计算装置134可包括例如通过总线144可操作地或电连接到计算机可读介质142的一个或多个处理单元140。总线144可包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线和任何各种本地、外围和/或独立总线中的一个或多个。
第N客户端计算装置134还可包括一个或多个网络接口146以能够通过网络102在第N客户端计算装置134与其他计算资源或装置之间通信。网络接口146可包括一个或多个网络接口控制器(NIC)或其他类型的收发器装置以通过网络发送和接收通信。在特定方面,可执行指令可存储在第N客户端计算装置134的计算机可读介质142上,并且如图1所示那些指令可例如包括操作系统148、本地共享文件夹和文件同步模块150以及可由一个或多个处理单元140加载和执行的其他模块、程序或应用。
可替代地或此外,本文所描述的功能性可至少部分地由一个或多个硬件逻辑部件(诸如加速器)执行。例如而非进行限制,可使用的说明性类型的硬件逻辑部件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑装置(CPLD)等。例如,加速器可表示混合装置,诸如来自ZYLEX或ALTERA的包括嵌入FPGA架构的CPU核心的混合装置。
第N客户端计算装置134的计算机可读介质142还可包括本地文件系统152或被划分成具有本地文件系统152,在所述本地文件系统152中可存储多个文件夹、子文件夹、文件或其组合。多个文件夹、子文件夹和文件可包括多个共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式。更具体地,多个共享文件夹、共享子文件夹、共享文件、共享子级文件和共享快捷方式可包括多个共享文件夹的本地实例、多个共享子文件夹的本地实例和多个共享文件的本地实例。
在特定方面,本地文件系统152可利用密码散列函数或其他散列函数以存储和检索存储在本地文件系统152内的文件和数据。所述散列函数可包括散列函数的衍生物,诸如MD2、MD4、MD5、MD6、SHA-0、SHA-1、SHA-2、SHA-3或其组合。在另一方面,散列函数可包括原始完整性校验消息摘要(RIPEMD)散列函数、RIPEMD-160或其组合。在下文所描述的图2和图3提供关于可在本地文件系统152内找到的示例性文件系统和示例性文件夹的更多细节。
如图1中进一步所示出,计算机可读介质142可包括存储在其上的主散列列表154。如本文所述的主散列列表154可包括文件夹散列、子文件夹散列和文件散列的列表并且可用来与之比较文件夹散列、子文件夹散列和文件散列的当前状态,以便确定自最后的主散列列表被计算和记录以来,文件夹、子文件夹和/或文件内的内容是否已经改变。
主散列列表154可以是存储在第N分布式计算资源108内的主散列列表124的副本。有时,主散列列表124、154可以相同。然而,当文件夹、子文件夹、文件或其组合在各种客户端计算装置130、132、134处被更改时,主散列列表124、154可在彼此同步之前不同。
仍参考图1,第N客户端计算装置134还可包括连接到其的输入装置160、输出装置162、显示装置164或其组合。具体地,输入装置160、输出装置162和显示装置164可连接到总线144。输入装置160、输出装置162和显示装置164可提供给用户与第N客户端计算装置134通信的能力。输入装置160可包括鼠标、键盘、麦克风、触摸屏、操纵杆、手持控制器、光笔、轨迹球、扫描器、图形板、磁性墨水读卡器(MICR)、光学字符阅读器(OCR)、条码阅读器、光学标记阅读器或其组合。输出装置162可包括打印机、扬声器、触觉装置或其组合。显示装置164可包括屏幕、监视器、投影仪或其组合。
图1还指示共享文件夹和文件同步系统100可包括连接到第N客户端计算装置134的数据存储区166。应理解,在替代性方面,共享文件夹和文件本地同步模块150、本地文件系统152、主散列列表154或其组合可位于数据存储区166内。在各方面和各种实例中,数据存储区166包括数据存储装置,诸如数据库、数据仓库或其他类型的结构化或非结构化数据存储装置。在一些实例中,数据存储区166可包括具有一个或多个表、指针、存储过程(procedure)等的语料库和/或关系数据库以使数据访问能够包括例如超文本标记语言(HTML)表、资源描述框架(RDF)表、web本体语言(OWL)表和/或可扩展标记语言(XML)表中的一个或多个。
计算机可读介质可包括计算机存储介质和/或通信介质。计算机存储介质可包括在任何方法或技术中实现的易失性存储器、非易失性存储器和/或其他永久性和/或辅助性计算机存储介质、可移动和不可移动计算机存储介质,用以存储信息诸如计算机可读指令、数据结构、程序模块或其他数据。计算机可读介质112、142可以是类似于数据存储区166的计算机存储介质的实例。
因此,计算机可读介质112、142和/或数据存储区166包括有形和/或物理形式的介质,其被包括在装置和/或为装置的一部分或在装置外部的硬件部件中,所述有形和/或物理形式的介质包括但不限于:随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、相变存储器(PRAM)、只读存储器(ROM)、掩模只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、致密盘只读存储器(CD-ROM)、数字多功能光盘(DVD)、光学卡或其他光学存储介质、磁带盒、磁带、磁盘存储装置、磁卡或其他磁性存储装置或介质、固态存储器装置、存储阵列、网络附接的存储装置、存储区域网络、托管式计算机存储装置或可用来存储和保持信息以用于由计算装置访问的任何其他存储存储器、存储装置和/或存储介质。
与计算机存储介质相反,通信介质可体现已调制数据信号(诸如载波或其他传输机制)中的计算机可读指令、数据结构、程序模块或其他数据。如本文中所定义,计算机存储介质并不包括通信介质。也就是说,计算机存储介质并不包括仅由已调制数据信号、载波或传播信号本身组成的通信介质。
为了简单起见,可通常与计算装置(诸如第N客户端计算装置134)相关联或随所述计算装置包括的其他部件或特征从图1的第N客户端计算装置134的描绘中省略。这些其他部件或特征可包括但不限于A/C电源、D/C电源、各种连接器端口、各种线、各种LED指示器、外壳、底盘、风扇、散热器等。
计算机可读存储介质112、142和/或数据存储区166可用来存储可由所述一个或多个处理单元110、140执行的任意数量的功能部件。在许多实现中,这些功能部件包括指令或程序,所述指令或程序可由所述一个或多个处理单元110、140执行并且在执行时实现操作逻辑以用于执行归结于共享文件夹和文件同步系统100的操作。共享文件夹和文件同步系统100的可在一个或多个处理单元110、140上执行以用于实现与如本文所述使共享文件夹和文件同步有关的各种功能和特征的功能部件包括处于第N分布式计算资源108内的远程共享文件夹和文件同步模块120和处于第N客户端计算装置134内的本地共享文件夹和文件同步模块150。
在实现中,各种模块120、150可包括可由处理单元110、140执行以执行与使共享文件夹和文件在若干客户端计算装置130、132、134和至少一个分布式计算资源104、106、108中同步有关的操作的计算机可读指令。
现参考图2,文件系统的实例被示出并且通常由200指代。在图2中示出的文件系统200可作为第N分布式计算资源108(图1)内的远程文件系统122(图1)使用。此外,在图2中示出的文件系统200可在第N分布式计算资源134(图1)内的本地文件系统152(图1)处使用。在另一方面,文件系统200可位于耦接到第N客户端计算装置134(图1)的数据存储区166(图1)内。
如图2中所示出,文件系统200可包括第一文件夹202、第二文件夹204和第N文件夹206。每个文件夹202、204、206可包括名称、标识符或其他描述符,例如,我的文档、照片、音乐、工作等。此外,如图2中所指示,第一文件夹202可包括第一子文件夹210、第二子文件夹212和第N子文件夹214。每个子文件夹210、212、214可包括名称、标识符或某一其他描述符。
第一文件夹202内的第一子文件夹210可包括第一文件216、第二文件218和第N文件220。第一文件夹202内的第二子文件夹212可包括第一文件222、第二文件224和第N文件226。此外,第一文件夹202内的第三子文件夹214可包括第一文件228、第二文件230和第N文件232。
每个文件216-232可包括归档文件、压缩文件、计算机辅助设计文件、数据库文件、桌面排版文件、文档文件、财务记录文件、字体文件、地理信息系统文件、图形文件、链接文件、快捷方式文件、数学文件、对象代码文件、页面描述语言文件、个人信息管理器文件、演示文件、项目管理软件文件、文献管理软件文件、科学数据文件、保密文件、信号数据(非音频)文件、声音(音频)文件、源代码文件、电子表格文件、表列数据文件、视频文件、视频游戏文件、虚拟机文件、网页文件、某一其他文件或其组合。
如图2中所示,文件系统200内的第一文件夹202还可包括子级一(1)文件234(又叫作第一子级文件)、子级二(2)文件236(又叫作第二子级文件)和子级N文件238(又叫作第N子级文件)。
第二文件夹204可包括第一子文件夹240、第二子文件夹242和第N子文件夹244。每个子文件夹240、242、244可包括名称、标识符或某一其他描述符。第二文件夹204内的第一子文件夹240可包括第一文件246、第二文件248和第N文件250。第二文件夹204内的第二子文件夹242可包括第一文件252、第二文件254和第N文件256。此外,第二文件夹204内的第三子文件夹244可包括第一文件258、第二文件260和第N文件262。
每个文件246-262可包括归档文件、压缩文件、计算机辅助设计文件、数据库文件、桌面排版文件、文档文件、财务记录文件、字体文件、地理信息系统文件、图形文件、链接文件、快捷方式文件、数学文件、对象代码文件、页面描述语言文件、个人信息管理器文件、演示文件、项目管理软件文件、文献管理软件文件、科学数据文件、保密文件、信号数据(非音频)文件、声音(音频)文件、源代码文件、电子表格文件、表列数据文件、视频文件、视频游戏文件、虚拟机文件、网页文件、某一其他文件或其组合。
如图2中所指示,文件系统200内的第二文件夹204还可包括子级一(1)文件264(又叫作第一子级文件)、子级二(2)文件266(又叫作第二子级文件)和子级N文件268(又叫作第N子级文件)。
此外,如所示出,第三文件夹206可包括第一子文件夹270、第二子文件夹272和第N子文件夹274。每个子文件夹270、272、274可包括名称、标识符或某一其他描述符。第三文件夹206内的第一子文件夹270可包括第一文件276、第二文件278和第N文件280。第三文件夹206内的第二子文件夹272可包括第一文件282、第二文件284和第N文件286。此外,第三文件夹206内的第三子文件夹274可包括第一文件288、第二文件290和第N文件292。
每个文件276-292可包括归档文件、压缩文件、计算机辅助设计文件、数据库文件、桌面排版文件、文档文件、财务记录文件、字体文件、地理信息系统文件、图形文件、链接文件、快捷方式文件、数学文件、对象代码文件、页面描述语言文件、个人信息管理器文件、演示文件、项目管理软件文件、文献管理软件文件、科学数据文件、保密文件、信号数据(非音频)文件、声音(音频)文件、源代码文件、电子表格文件、表列数据文件、视频文件、视频游戏文件、虚拟机文件、网页文件、某一其他文件或其组合。
图2中还示出文件系统200内的第N文件夹206可包括子级一(1)文件294(又叫作第一子级文件)、子级二(2)文件296(又叫作第二子级文件)和子级N文件298(又叫作第N子级文件)。
图3示出由300指代的文件夹的实例。文件夹300可与结合图1描述的文件系统122、152和结合图2描述的文件系统200一起使用。此外,文件夹300可以是图2中示出的文件夹202、204、206中的任一个的表示。
如图3中所描绘,文件夹300可包括子文件夹302,并且子文件夹302可包括第一文件304、第二文件306和第N文件308。文件夹300还可包括子级1文件310(又叫作第一子级文件)、子级2文件312(又叫作第二子级文件)和子级N文件314(又叫作第N子级文件)。每个文件304-312可包括归档文件、压缩文件、计算机辅助设计文件、数据库文件、桌面排版文件、文档文件、财务记录文件、字体文件、地理信息系统文件、图形文件、链接文件、快捷方式文件、数学文件、对象代码文件、页面描述语言文件、个人信息管理器文件、演示文件、项目管理软件文件、文献管理软件文件、科学数据文件、保密文件、信号数据(非音频)文件、声音(音频)文件、源代码文件、电子表格文件、表列数据文件、视频文件、视频游戏文件、虚拟机文件、网页文件、某一其他文件或其组合。
图3还示出文件夹300可包括第一快捷方式316、第二快捷方式318和第N快捷方式320。每个快捷方式316、318、320可以是符号链接,即,符号链或软链接。此外,每个快捷方式316、318、320可包括呈绝对或相对路径形式的对另一个文件或目录的引用。
如图3中所指示,文件夹300可包括文件夹散列330并且文件夹散列330可以是文件夹300存储在计算机可读介质的文件系统内的位置的指示。子文件夹302可包括子文件夹散列332,所述子文件夹散列332可以是子文件夹302存储在计算机可读介质的文件系统内的位置的指示。此外,子文件夹302内的每个文件304、306、308可包括对应的文件散列334、336、338。例如,第一文件304可包括第一文件散列334,第二文件306可包括第二文件散列336,并且第N文件308可包括第N文件散列338。每个文件散列334、336、338可指示每个文件304、306、308存储在计算机可读介质的文件系统内的位置。
图3还示出子级1文件310可包括相关联的文件散列340,子级2文件312可包括相关联的文件散列342,并且子级N文件314还可包括文件散列344。每个文件散列340、342、344可指示每个文件310、312、314存储在计算机可读介质的文件系统内的位置。第一快捷方式316可包括快捷方式散列346,第二快捷方式318可包括快捷方式散列348,并且第N快捷方式320还可包括快捷方式散列350。每个快捷方式散列346、348、350可指示每个快捷方式316、318、320存储在计算机可读介质的文件系统内的位置。
在特定实例中,子文件夹散列332可以是与存储在子文件夹302中的文件304、306、308相关联的文件散列334、336、338的函数。换句话讲,子文件夹散列332可基于与存储在子文件夹302内的文件304、306、308相关联的文件散列334、336、338而被计算。文件散列334、336、338中的任一个的任何变化将导致新的子文件夹散列332。
文件夹散列330可以是与存储在文件夹内的子文件夹302相关联的子文件夹散列332、与存储在子文件夹302内的文件304、306、308相关联的文件散列334、336、338、与存储在文件夹300内的子级文件310、312、314相关联的子级文件散列340、342、344以及与存储在文件夹300内的快捷方式316、318、320相关联的快捷方式散列346、348、350的函数。换句话讲,文件夹散列330可基于与存储在文件夹内的子文件夹302相关联的子文件夹散列332、与存储在子文件夹302内的文件304、306、308相关联的文件散列334、336、338、与存储在文件夹300内的子级文件310、312、314相关联的子级文件散列340、342、344以及与存储在文件夹300内的快捷方式316、318、320相关联的快捷方式散列346、348、350而被计算。因此,子文件夹散列332、文件散列334、336、338、子级文件散列340、342、344以及快捷方式散列346、348、350中的任一个的任何变化将导致新的文件夹散列330。
因此,通过监视被计算并且被分配给每个文件夹300、子文件夹302、文件304、306、308、子级文件310、312、314以及快捷方式316、318、320的散列330-350的状态,共享文件夹和文件同步系统100(图1)(例如,远程和本地共享文件夹和文件同步模块120、150(图1))可快速地查明哪些文件夹202-206、300、子文件夹210-214、240-244、270-274、302、文件216-232、246-262、276-288、304-308、子级文件234-238、264-268、294-298、310-314、快捷方式316-320或其组合已经被更改或已经使其中的数据经历改变,而实际上无须监视文件夹202-206、300、子文件夹210-214、240-244、270-274、302、文件216-232、246-262、276-288、304-308、子级文件234-238、264-268、294-298、310-314以及快捷方式316-320的内容。
例如,远程共享文件夹和文件同步模块120、150可将用于远程或本地文件系统122、152的散列330-350的当前列表与散列的最近列表(例如,用于此特定远程或本地文件系统122、152的主散列列表124、154)进行比较,以便确定哪些文件夹202-206、300、子文件夹210-214、240-244、270-274、302、文件216-232、246-262、276-288、304-308、子级文件234-238、264-268、294-298、310-314和快捷方式316-320可能需要被同步。如果散列330-350中没有一个改变,那么对远程或本地文件系统122、152将不执行同步。
所述远程或本地共享文件夹和文件同步模块120、150可快速地遍历当前文件夹散列330以确定文件夹散列330(如果有的话)中的哪一个与每个文件夹202-206、300的最近记录的文件夹散列330不同。不同的任何文件夹散列330向远程或本地共享文件夹和文件同步模块120、150提供如下指示:文件夹202-206、300的子文件夹210-214、240-244、270-274、302内的文件216-232、246-262、276-288、304-308已经被更改(例如更新、编辑、删除、创建等)。对于具有与主列表124、154上的文件夹散列330不同的文件夹散列330的任何文件夹202-206、300,远程同步模块120或本地同步模块150可遍历与存储在文件夹202-206、300内的文件216-232、246-262、276-288、304-308相关联的文件散列334-338以确定文件216-232、246-262、276-288、304-308(如果有的话)中的哪些已经被更改。此外,可遍历子级文件散列340-344以便确定子级文件234-238、264-268、294-298、310-314中的哪些已经被更改、更新或以其他方式被改变。而且,可遍历快捷方式散列346-350以便确定快捷方式316-320中的任一个是否已经被更改或改变。
此外,对于具有新的或不同的文件夹散列330的每个文件夹202-206、300,远程或本地共享文件夹和文件同步模块120、150可遍历与文件夹202-206、300内的子文件夹210-214、240-244、270-274、302相关联的子文件夹散列332,以便确定哪些子文件夹210-214、240-244、270-274、302(如果存在的话)包括已经被更改的文件216-232、246-262、276-292、304-308。然后,对于具有不同子文件夹散列332的任何子文件夹210-214、240-244、270-274、310,远程同步模块120或本地同步模块150可遍历与存储在子文件夹210-214、240-244、270-274、310内的文件216-232、246-262、276-292、304-308相关联的文件散列334-338,以便确定哪些文件216-232、246-262、276-292、304-308具有不同文件散列334-338。
包括不同文件散列334-338的任何文件216-232、246-262、276-292、304-308被认为已经被更改并且使该特定文件216-232、246-262、276-292、304-308同步以包括最近动作。动作可包括对文件220-236、250-266、280-296、304-308或文件220-236、250-266、280-296、304-308内容的更新、编辑、添加、删除或任何其他改变。
图4至图9示出与使共享文件夹和文件同步相关联的各种过程。例如,图4示出将文件和主散列列表上传到远程文件系统的示例性过程的流程图。图5和图6示出用于使共享文件夹和文件同步的示例性过程的流程图。图7示出用于使来自本地文件系统的文件同步的示例性过程的流程图。图8示出用于使来自远程文件系统的文件同步的示例性过程的流程图。此外,图9示出用于遍历文件夹树和子文件夹树以定位文件变化用于同步的示例性过程的流程图。
过程以区块集合形式在逻辑流程图中示出,其表示一系列操作,所述一系列操作中的一些或全部可在硬件、软件或其组合中实现。在软件的上下文中,区块表示存储于一个或多个计算机可读介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,执行所表述的操作。总体上,计算机可执行指令包括例行程序、程序、对象、部件、数据结构等,其执行特定功能或实现特定抽象数据类型。所描述的操作的顺序不应被解释为限制。任意数量的所描述的区块可以任意顺序和/或并行于实现所述过程或替代性过程而被组合,并且并不是需要执行所有区块。出于论述目的,本文的过程参考在本文中的实例中描述的框架、架构和环境进行描述,尽管所述过程可在多种多样的其他框架、架构或环境中实现。
各种过程的描述可包括某种过渡性语言和方向性语言,诸如“之后”、“接下来”、“然后”、“随后”、“返回至”、“继续至”、“前进至”等。这些单词及其他类似单词仅意图通过所述过程的图形说明来引导读者并且并不意图限制可执行说明中描绘的过程步骤的顺序。
另外,图4至图9中描绘的各种过程步骤中的一个或多个可由分布式计算资源104、106、108(图1)或客户端计算装置130、132、134(图1)中的一个或多个执行,以便使存储在其中或存储在其可访问的存储器装置中的共享文件夹和文件同步。具体地,图4至图9中描绘的各种过程步骤中的一个或多个可由分布式计算资源104、106、108(图1)内的远程共享文件夹和文件同步模块120(图1)、客户端计算装置130、132、134(图1)内的本地共享文件夹和文件同步模块150(图1)或其组合执行。
如上文所述,图4示出将文件和主散列列表从本地文件系统上传到远程文件系统的由400指代的示例性过程的流程图。开始于402处,过程400包括设定变量N=1。变量N可以是整数,其将充当计数器以允许过程遍历单独文件一次一个而无需重复任何文件。在404处,过程400可包括计算本地文件系统内的第N文件夹的文件夹散列。可基于用来将与第N文件夹相关联的数据映射给本地文件系统存储于其上的存储器或计算机可读介质的散列表来计算或以其他方式确定第N文件夹的文件夹散列。第N文件夹的文件夹散列基于其中的每个子文件夹的子文件夹散列、第N文件夹内的每个文件的文件散列和位于第N文件夹内的子文件夹内的每个文件的文件散列。在特定方面,过程400可利用用来存储和检索与文件相关联的数据的数据模型。过程400可利用远程过程调用(RPC)来从与文件系统内的数据相关联的散列表检索文件夹散列。具体地,过程400可利用GetRootFolder RPC或GetRootFolderRPC的修改版本,以便从散列表检索文件夹散列。
在406处,过程400可包括计算或以其他方式确定位于本地文件系统内的第N文件夹内的每个子文件夹的子文件夹散列。可基于用来将与第N文件夹内的每个子文件夹相关联的数据映射给本地文件系统存储于其上的存储器或计算机可读介质的散列表来计算第N文件夹内的每个子文件夹的散列。第N文件夹内的每个子文件夹的散列基于位于第N文件夹内的子文件夹内的每个文件的散列。此外,在特定方面,过程400可利用远程过程调用(RPC)来从与文件系统内的数据相关联的散列表检索子文件夹散列。具体地,过程400可利用GetRootFolder RPC或GetRootFolder RPC的修改版本,以便从散列表检索子文件夹散列。
移动至408,过程400可包括计算第N文件夹内的每个文件的文件散列。这包括位于第N文件夹内的每个子文件夹内的每个文件。可基于用来将与第N文件夹内的每个文件相关联的数据映射给本地文件系统存储于其上的存储器或计算机可读介质的散列表来计算第N文件夹内的每个文件的散列。此外,在特定方面,过程400可利用远程过程调用(RPC)来从与文件系统内的数据相关联的散列表检索每个文件的文件散列。具体地,过程400可利用GetRootFolder RPC或GetRootFolder RPC的修改版本,以便从散列表检索每个文件的文件散列。
继续至410,过程400可包括记录本地文件系统上的第N文件夹的文件夹散列、子文件夹散列和文件散列。可记录第N文件夹的文件夹散列、子文件夹散列和文件散列并且使其与用于第N文件夹的标识符、用于第N文件夹内的每个子文件夹的标识符以及用于第N文件夹内的每个文件的标识符相关联。每个标识符可以是与第N文件夹、每个子文件夹和每个文件相关联的名称、标题或某一其他描述。在412处,过程400包括确定在文件系统中是否存在另一个文件夹。
如果在文件系统中存在另一个文件夹,那么过程400可前进至414并且过程400可包括使N的值增加一(1)。换句话讲,N的值可通过向N的当前值添加一(1)(即,N=N+1)来重新计算。然后,过程400可返回至404并且过程400可执行如本文所述的步骤404至410。在412处,如果过程400确定不存在剩余的文件夹,那么过程400可前进至416。
在416处,过程400可包括将上文检索的散列值聚集到单一主散列报告或单一主散列列表中。所述主散列列表可包括每个文件夹的文件夹散列、每个文件夹内的每个子文件夹的子文件夹散列和每个子文件夹和文件夹内的每个文件的文件散列。所述主散列列表可被编译为表并且可包括时间/日期戳和与本地文件系统相关联的客户端计算装置的标识符。在418处,过程400可包括向远程文件系统传输文件夹和文件夹的内容(例如,其中的子文件夹和文件)。例如,可通过网络连接将文件夹和其中的内容上传到分布式计算资源的远程文件系统。然后,过程400可在420处结束。
图5和图6示出用于使共享文件夹和文件同步的示例性过程500的流程图。开始于502,过程500可包括定期地轮询或以其他方式确定在其中存储共享文件夹、共享子文件夹、共享文件、共享子级文件和/或共享快捷方式的远程实例的远程文件系统的状态。
远程文件系统状态可包括多个远程文件夹散列值。可至少部分地基于远程文件系统处的与多个共享子文件夹的远程实例相关联的多个子文件夹散列、与多个共享文件的远程实例相关联的多个文件散列、与多个共享子文件的远程实例相关联的多个子文件散列、与多个共享快捷方式的远程实例相关联的多个快捷方式散列或其组合来确定多个远程文件夹散列值。
此外,可将远程文件系统的状态组织为主散列列表或当前远程文件系统散列列表。所述轮询可由远程文件系统处的共享文件夹和文件同步模块发起并且可将结果传输至本地文件系统处的共享文件夹和文件同步模块。相反,本地文件系统处的共享文件夹和文件同步模块可向远程文件系统处的共享文件夹和文件同步模块传输针对与远程文件系统处的共享文件夹和文件相关联的散列的当前状态的请求。响应于该请求,远程文件系统处的共享文件夹和文件同步模块可轮询共享文件夹和文件的散列的状态并且将轮询结果传输给本地文件系统处的共享文件夹和文件同步模块。本地文件系统处的共享文件夹和文件同步模块可接收与远程文件系统处的共享文件夹和文件相关联的散列的当前状态例如作为主散列列表。
在504处,过程500可包括将远程文件系统的当前状态与在本地文件系统处可用的资源或由本地文件系统处的同步模块确定的本地文件系统的状态进行比较。本地文件系统状态可包括处于本地文件系统内的多个本地文件夹散列值。可至少部分地基于本地文件系统处的与多个共享子文件夹的本地实例相关联的多个子文件夹散列、与多个共享文件的本地实例相关联的多个文件散列、与多个共享子文件的本地实例相关联的多个子文件散列、与多个共享快捷方式的本地实例相关联的多个快捷方式散列或其组合来确定多个本地文件夹散列值。
过程500可将远程文件系统状态和本地文件系统状态进行比较以确定远程文件系统状态内的多个远程文件夹散列值与本地文件系统状态内的多个本地文件夹散列值的任何差异。在其中远程文件夹散列值与本地文件夹散列值不同的任何共享文件夹可如本文所述在本地文件系统和远程文件系统上同步。
具体地,本地文件系统处的共享文件夹和文件同步模块可进行与共享文件夹和文件的本地版本相关联的散列的轮询以得到当前本地散列列表。可将当前远程散列列表(例如,主散列列表)与先前的主散列列表进行比较。也可将当前本地散列列表与最近的先前记录的本地散列列表进行比较。此外,可将当前本地散列列表与当前主散列列表进行比较来确定当前本地散列列表中的散列与当前主散列列表中的散列之间的任何差异。
在特定方面,过程500可包括确定特定共享文件是否包括不一致的文件散列配对。所述不一致的文件散列配对可包括特定共享文件的本地实例的本地文件散列,其与特定共享文件的远程实例的远程文件散列不同。此外,过程500可包括使特定共享文件与如下文所述的不一致的文件散列配对同步。在另一方面,不一致的文件散列配对可包括特定共享文件的本地实例的丢失的本地文件散列,或特定共享文件的远程实例的丢失的远程文件散列。在这种情况下,过程500可包括将特定共享文件的本地实例从本地文件系统删除或将特定共享文件的远程实例从远程文件系统删除。
移动至506,过程500可包括确定任何文件是否已经在本地改变。基于上文执行的比较,在当前本地散列列表与最近先前记录的本地散列列表之间的任何差异可指示文件已经由用户在本地改变。此外,在当前本地散列列表与当前主散列列表之间的任何差异可指示文件已经被远程地或在本地改变。与每个文件相关联的时间戳可指示最近版本。具有最近时间戳的本地文件可被认为已经在本地改变。
具体地说,过程500可包括确定特定共享文件的本地实例的时间戳,确定特定共享文件的远程实例的时间戳,以及使特定共享文件与特定共享文件的最近的本地实例和特定共享文件的最近的远程实例同步。例如,过程500可包括将特定共享文件的本地实例上传到远程文件系统或将特定共享文件的远程实例下载到本地文件系统。
在506处,如果任何文件已经在本地改变,那么过程500可前进至508并且过程500还可包括将文件上传到远程文件系统。在一方面,可将已经改变的整个文件上传到远程文件系统。在另一方面,为了节省上传时间和存储,共享文件夹和文件同步系统可解析来自文件的变化并且仅将所述变化上传到远程文件系统。在上传之后,共享文件夹和文件同步系统可在远程文件系统处利用变化更新文件。然后,过程500可移动至510。返回至506,如果不存在已经在本地改变的任何文件,那么过程500可直接移动至510。
在510处,过程500可包括确定任何文件夹、子文件夹、文件或其组合在远程文件系统中是否已经被删除。基于最近的主散列列表和当前主散列列表的比较,所述系统可确定任何文件夹散列、子文件夹散列或文件散列是否从当前主散列列表丢失。如果丢失,那么对应于当前主散列列表中的丢失的散列的那些文件夹、子文件夹、文件、子级文件或快捷方式被认为已经从远程文件系统删除。如果存在从远程文件系统删除的文件夹、子文件夹、文件、子级文件或快捷方式,那么过程500可移动至512。在512处,过程500可包括将对应的文件夹、子文件夹、文件、子级文件或快捷方式从本地文件系统删除。在特定方面,可立即删除文件夹、子文件夹、文件、子级文件或快捷方式。在另一方面,可使用延迟的删除,并且可将文件夹、子文件夹、文件、子级文件或快捷方式置于删除的文件夹或高速缓冲存储器中预定时间段。在预定时间段期满之后,可永久地删除文件夹、子文件夹、文件、子级文件或快捷方式。可对删除的文件夹或高速缓冲存储器进行加密或解密。此外,可将删除的文件夹或高速缓冲存储器对用户隐藏或不隐藏。
然后,过程500可继续至514。返回至510,如果不存在从远程文件系统删除的任何文件夹、子文件夹、文件、子级文件或快捷方式,那么过程500可直接移动至514。
在514处,过程500可包括确定任何文件夹、子文件夹、文件或其组合在本地文件系统中是否已经被删除。基于最近记录的先前的本地散列列表和当前本地散列列表的比较,所述系统可确定任何文件夹散列、子文件夹散列或文件散列是否从当前本地散列列表丢失。如果丢失,那么对应于当前本地散列列表中的丢失的散列的那些文件夹、子文件夹、文件、子级文件或快捷方式被认为已经从本地文件系统删除。如果存在从本地文件系统删除的文件夹、子文件夹、文件、子级文件或快捷方式,那么过程500可移动至516。在516处,过程500可包括将对应的文件夹、子文件夹、文件、子级文件或快捷方式从远程文件系统删除。然后,过程500可继续至图6的602。返回至514,如果不存在从本地文件系统删除的任何文件夹、子文件夹、文件、子级文件或快捷方式,那么过程500可直接移动至图6的602。
在602处,过程500可包括确定任何文件是否已经被远程地更新或以其他方式改变。此外,过程500可包括确定是否将任何新文件添加至远程文件系统。基于上文执行的比较,当与本地文件系统处的最近主列表进行比较时,当前远程散列数据内的任何差异可指示文件已经由用户在另一个客户端计算装置(例如,另一个本地文件系统)处改变,并且那些改变在远程文件系统处已经被改变但尚未在访问远程文件系统(包括当前本地文件系统)的所有客户端计算装置上传播。此外,在当前本地散列列表与当前主散列列表之间的任何差异可指示文件已经被远程地或在本地改变。与每个文件相关联的时间戳可指示最近版本。具有最近时间戳的远程文件可被认为已经远程地改变。如果在主文件列表内存在新的文件夹散列、子文件夹散列或文件散列,那么对应的文件夹、子文件夹、文件、子级文件或快捷方式将被认为是新的。
在602处,如果任何文件已经被远程地更新或存在远程存储的新文件,那么过程500可前进至604并且过程500还可包括将更新的文件和新文件从远程文件系统下载至本地文件系统。在一方面,可将已经更新或以其他方式改变的整个文件下载至本地文件系统。在另一方面,为了节省下载时间和存储,共享文件夹和文件同步系统可解析来自文件的更新或变化并且仅将所述更新或变化下载至本地文件系统。在下载完成之后,共享文件夹和文件同步系统可在本地文件系统处利用更新或变化更新文件。然后,过程500可移动至606。返回至602,如果不存在远程地更新的任何文件或在远程文件系统处不存在任何新文件,那么过程500可直接移动至606。
在606处,过程500可包括确定对共享文件夹、子文件夹、文件、子级文件或快捷方式的任一的访问许可是否对任何本地用户改变。如果没有,那么过程500可在608处结束。另一方面,如果访问许可对任何本地用户改变,那么过程500移动至610,在610处,过程500可包括确定特定本地用户对特定共享文件夹、子文件夹、文件、子级文件或快捷方式的访问是被授权还是被拒绝。如果特定本地用户对特定共享文件夹、子文件夹、文件、子级文件或快捷方式的访问被拒绝,那么过程500移动至612并且过程500可包括将特定文件夹、子文件夹、文件、子级文件或快捷方式从与被拒绝访问特定文件夹、子文件夹、文件、子级文件或快捷方式的本地用户相关联的本地文件系统删除。然后,过程500可在608处结束。
返回至610,如果将对特定共享文件夹、子文件夹、文件、子级文件或快捷方式的访问授权给特定本地用户,那么过程500移动至614并且过程500可包括将特定文件夹、子文件夹、文件、子级文件或快捷方式从远程文件系统下载至与被授权访问特定文件夹、子文件夹、文件、子级文件或快捷方式的本地用户相关联的本地文件系统。然后,过程500可在608处结束。
现参考图7,用于使来自本地文件系统的文件同步的示例性过程的流程图被示出并且通常由700指代。开始于702,过程700可包括进入do循环,其中定期地执行以下步骤。例如,在704处,过程700可包括设定变量N等于一(1)。变量N可以是整数,其将充当计数器以允许共享文件夹和文件同步系统遍历单独文件一次一个而无需重复任何文件夹。在706处,过程700可包括检索本地文件系统的第N文件夹的当前散列。第N文件夹的当前散列可从与本地文件系统相关联的用来映射存储在本地文件系统内的数据的存储器位置的散列表检索。具体地说,第N文件夹的当前散列可使用GetRootFolder RPC从本地文件系统散列表检索。在另一方面,过程700可基于与存储在第N文件夹内的任何子文件夹、文件、子级文件和/或快捷方式相关联的子文件夹散列、文件散列、子级文件散列和/或快捷方式散列来重新计算第N文件夹的当前散列。过程700可重新计算当前散列并且使用该值来验证所检索值的准确性。或者,代替从散列表检索当前散列,过程700可包括如上文所述重新计算散列。
在检索本地文件系统的第N文件夹的当前文件夹散列之后,过程700可前进至708。在708处,过程700可包括将本地文件系统的第N文件夹的当前文件夹散列与记录在主散列列表中的第N文件夹的先前散列进行比较。在特定方面,所述比较可包括将第N文件夹的文件夹散列的实际值与存储在主散列列表中的第N文件夹的文件夹散列的最近记录值进行比较以确定第N文件夹的当前文件夹散列是否与第N文件夹的文件夹散列的最近记录值不同。
在710处,过程700可包括确定第N文件夹的当前文件夹散列是否与第N文件夹的先前记录的文件夹散列不同。在特定方面,第N文件夹的当前文件夹散列取决于第N文件夹内的子文件夹和第N文件夹内的文件(例如,第N文件夹内的任何子文件夹)。如果第N文件夹内的任何文件的内容改变,那么文件的文件散列改变并且响应于改变的文件散列,第N文件夹的文件夹散列也改变。此外,如果第N文件夹的子文件夹内的任何文件的内容改变,那么所述文件的文件散列改变并且所述子文件夹的子文件夹散列改变。而且,第N文件夹的文件夹散列改变。第N文件夹的新文件夹散列可指示第N文件夹内的一个文件或多个文件已经改变并且应相应地同步。
在710处,如果第N文件夹的当前文件夹散列不与第N文件夹的先前记录的文件夹散列不同,那么过程700可移动至712。在712处,过程700可包括记录如下指示:第N文件夹的文件夹散列并未改变或与第N文件夹的先前记录的文件夹散列相同。此外,所述过程可包括记录第N文件夹的内容与先前保存的内容相同并且并未被更新、改变、编辑或以其他方式更改的指示。过程700可记录第N文件夹的文件夹散列和第N文件夹的内容在用于追踪共享文件夹和文件的变化的文件中未改变的指示。
继续至714,过程700可包括确定在本地文件系统中是否存在另一个文件夹。如果不存在,那么过程700可在716处结束。否则,如果在本地文件系统中存在另一个文件夹,那么过程700可前进至718。在718处,过程700可包括将N的值增加一(1)。换句话讲,N的值可通过向N的当前值添加一(1)(即,N=N+1)来重新计算。然后,过程700可返回至706并且过程700可如上文所述继续本地文件系统中的下一个文件夹。
返回至710,如果第N文件夹的当前文件夹散列与第N文件夹的先前记录的文件夹散列不同,那么过程700可移动至720。在720处,过程700可包括将第N文件夹的当前文件夹散列记录在主散列列表中。具体地,过程700可用第N文件夹的当前文件夹散列值改写第N文件夹的先前文件夹散列值的主散列列表内的条目。可在改写之前将第N文件夹的先前散列值记录在追踪的文件中。否则,先前的散列值可被丢弃。
移动至722,过程700可包括使本地文件系统的第N文件夹与远程文件系统中的对应的第N文件夹同步。具体地,一旦本地文件系统的第N文件夹内已经改变的文件与远程文件系统中的那些文件的对应的实例同步。过程700可通过遍历与本地文件系统的第N文件夹相关联的文件夹树和子文件夹树以确定哪些子文件夹散列和文件散列已经改变来快速地定位和确定哪些文件已经被更新或以其他方式被改变。
具体地,用于遍历文件夹树和子文件夹树以定位文件变化用于同步的在下文结合图9所描述的过程可由共享文件夹和文件同步系统使用,以快速地查明本地文件系统内的哪些文件夹、子文件夹、文件或其部分将要与远程文件系统同步。一旦已经改变或更新的文件被定位,那些文件就在远程文件系统中被同步。
然后,过程700可继续至714并且过程700可包括确定本地文件系统是否包括另一个文件夹。如果不存在,那么过程700可在716处结束。否则,过程700可移动至718并且如上文所述继续。
图8示出用于使来自远程文件系统的文件同步的示例性过程的流程图,其通常用800指代。开始于802,过程800可包括进入do循环,其中定期地执行以下步骤。例如,在804处,过程800可包括设定变量N等于一(1)。变量N可以是整数,其将充当计数器以允许共享文件夹和文件同步系统遍历单独文件一次一个而无需重复任何文件夹。在806处,过程800可包括检索远程文件系统的第N文件夹的当前散列。第N文件夹的当前散列可从与远程文件系统相关联的用来映射存储在远程文件系统内的数据的存储器位置的散列表检索。具体地说,第N文件夹的当前散列可使用GetRootFolder RPC从远程文件系统散列表检索。
在另一方面,过程800可包括基于与存储在第N文件夹内的任何子文件夹、文件、子级文件和/或快捷方式相关联的子文件夹散列、文件散列、子级文件散列和/或快捷方式散列来重新计算第N文件夹的当前散列。过程800可重新计算当前散列并且使用该值来验证所检索值的准确性。或者,代替从散列表检索当前散列,过程800可包括如上文所述重新计算散列。
在检索远程文件系统的第N文件夹的当前文件夹散列之后,过程800可前进至808。在808处,过程800可包括将远程文件系统的第N文件夹的当前文件夹散列与记录在主散列列表中的第N文件夹的先前散列进行比较。在特定方面,所述比较可包括将第N文件夹的文件夹散列的实际值与存储在主散列列表中的第N文件夹的文件夹散列的最近记录值进行比较以确定第N文件夹的当前文件夹散列是否与第N文件夹的文件夹散列的最近记录值不同。
在810处,过程800可包括确定第N文件夹的当前文件夹散列是否与第N文件夹的先前记录的文件夹散列不同。在特定方面,第N文件夹的当前文件夹散列取决于第N文件夹内的子文件夹和第N文件夹内的文件(例如,第N文件夹内的任何子文件夹)。如果第N文件夹内的任何文件的内容改变,那么文件的文件散列改变并且响应于改变的文件散列,第N文件夹的文件夹散列也改变。此外,如果第N文件夹的子文件夹内的任何文件的内容改变,那么所述文件的文件散列改变并且所述子文件夹的子文件夹散列改变。而且,第N文件夹的文件夹散列改变。第N文件夹的新文件夹散列可指示第N文件夹内的一个文件或多个文件已经改变并且应相应地同步。
在810处,如果第N文件夹的当前文件夹散列不与第N文件夹的先前记录的文件夹散列不同,那么过程800可移动至812。在812处,过程800可包括记录如下指示:第N文件夹的文件夹散列并未改变或与第N文件夹的先前记录的文件夹散列相同。此外,所述过程可包括记录第N文件夹的内容与先前保存的内容相同并且并未被更新、改变、编辑或以其他方式更改的指示。过程800可记录第N文件夹的文件夹散列和第N文件夹的内容在用于追踪共享文件夹和文件的变化的文件中未改变的指示。
继续至814,过程800可包括确定在远程文件系统中是否存在另一个文件夹。如果不存在,那么过程800可在816处结束。否则,如果在远程文件系统中存在另一个文件夹,那么过程800可前进至818。在818处,过程800可包括将N的值增加一(1)。换句话讲,N的值可通过向N的当前值添加一(1)(即,N=N+1)来重新计算。然后,过程800可返回至806并且过程800可如上文所述继续远程文件系统中的下一个文件夹。
返回至810,如果第N文件夹的当前文件夹散列与第N文件夹的先前记录的文件夹散列不同,那么过程800可移动至820。在820处,过程800可包括将第N文件夹的当前文件夹散列记录在主散列列表中。具体地,过程800可用第N文件夹的当前文件夹散列值改写第N文件夹的先前文件夹散列值的主散列列表内的条目。可在改写之前将第N文件夹的先前散列值记录在追踪的文件中。否则,先前的散列值可被丢弃。
移动至822,过程800可包括使远程文件系统的第N文件夹与同特定共享文件夹和文件同步系统相关联的每个本地文件系统中对应的第N文件夹同步,所述特定共享文件夹和文件同步系统访问远程文件系统和其中的文件夹和文件。具体地,一旦远程文件系统的第N文件夹内的已经改变的文件与本地文件系统中的那些文件的对应的实例同步。过程800可通过遍历与远程文件系统的第N文件夹相关联的文件夹树和子文件夹树以确定哪些子文件夹散列和文件散列已经改变来快速地定位和确定哪些文件已经被更新或以其他方式被改变。
具体地,用于遍历文件夹树和子文件夹树以定位文件变化用于同步在下文结合图9所描述的的过程可由共享文件夹和文件同步系统使用,以快速地查明远程文件系统内的哪些文件夹、子文件夹、文件或其部分将要与本地文件系统同步。一旦已经改变或更新的文件被定位,那些文件就在本地文件系统中被同步。
现参考图9,用于遍历文件夹树和子文件夹树以定位文件变化用于同步的示例性过程的流程图被示出并且由900指代。如图9所示,过程900可在902处以do循环开始,其中当新文件夹被识别时,可执行以下步骤中的一个或多个。例如,在904处,过程900可包括设定变量N等于一(1)。变量N可以是整数,其将充当计数器以允许共享文件夹和文件同步系统遍历单独子文件夹一次一个而无需重复任何子文件夹。
在906处,过程900可包括检索位于被识别为具有新文件夹散列的文件夹内的第N子文件夹的当前散列。第N子文件夹的当前子文件夹散列可从与本地文件系统或远程文件系统相关联的用来映射存储在特定文件系统内的数据的存储器位置的散列表检索。在一个方面,第N子文件夹的当前散列可使用GetRootFolder RPC从特定文件系统散列表检索。
在检索文件系统的第N子文件夹的当前子文件夹散列之后,过程900可前进至908。在908处,过程900可包括将文件系统的第N子文件夹的当前子文件夹散列与记录在主散列列表、当前本地散列列表、当前远程散列列表或其组合中的第N子文件夹的先前子文件夹散列进行比较。在特定方面,所述比较可包括将第N子文件夹的子文件夹散列的实际值与存储在特定散列列表中的第N子文件夹的子文件夹散列的最近记录值进行比较以确定第N子文件夹的当前子文件夹散列是否与第N子文件夹的子文件夹散列的最近记录值不同。
在910处,过程900可包括确定第N子文件夹的当前子文件夹散列是否与第N子文件夹的先前记录的子文件夹散列不同。在特定方面,第N子文件夹的当前子文件夹散列取决于第N子文件夹内的文件。如果第N子文件夹内的任何文件的内容改变,那么所述文件的文件散列改变并且所述第N子文件夹的子文件夹散列也改变。第N子文件夹的新子文件夹散列可指示第N子文件夹内的一个文件或多个文件已经改变并且应相应地同步。
在910处,如果第N子文件夹的当前子文件夹散列不与第N子文件夹的先前记录的子文件夹散列不同,那么过程900可移动至912。在912处,过程900可包括使子文件夹内的具有新文件散列的每个文件同步。然后,过程900可移动至914,在914处过程可包括确定在被识别具有新文件夹散列的文件夹中是否存在另一个子文件夹。如果存在另一个子文件夹,那么过程900可移动至916。在916处,过程900可包括将N的值增加一(1)。换句话讲,N的值可通过向N的当前值添加一(1)(即,N=N+1)来重新计算。然后,过程900可返回至906并且过程900可如上文所述继续被识别为在文件系统内具有新文件夹散列的文件夹中的下一个子文件夹。
返回914,如果在特定文件夹被识别为具有新文件夹散列的情况下不存在另一个子文件夹,那么过程900可继续至918。在918处,过程900可包括确定文件系统是否包括另一个文件夹,所述另一个文件夹包括新散列。如果文件系统不包括具有新散列的另一个文件夹,那么过程900可返回至904并且可如本文所述继续进行。否则,在918处,如果文件系统不具有含新散列的另一个文件夹,那么过程900可在920处结束。
图9示出用于遍历文件夹树和子树一次一个(即,当N从1增加至N的最终值时按顺序进行)的示例性过程900。应理解,在利用多个处理器、多核处理器、多线程处理、交织的多线程处理、共享处理或其任意组合的现代计算系统的情况下,可同时、或基本同时、彼此并行地遍历多个文件夹树和子树。
可鉴于以下条款对本公开的实施方案进行描述:
1.一种方法,其包括:
确定远程文件系统状态,其中所述远程文件系统状态包括远程文件夹散列值,并且其中至少部分地基于所述远程文件系统处的与共享子文件夹的远程实例相关联的子文件夹散列、与共享文件的远程实例相关联的文件散列、与共享子文件的远程实例相关联的子文件散列、与共享快捷方式的远程实例相关联的快捷方式散列或其组合确定所述远程文件夹散列值;
确定本地文件系统状态,其中所述本地文件系统状态包括本地文件夹散列值,并且其中至少部分地基于所述本地文件系统处的与共享子文件夹的本地实例相关联的子文件夹散列、与共享文件的本地实例相关联的文件散列、与共享子文件的本地实例相关联的子文件散列、与共享快捷方式的本地实例相关联的快捷方式散列或其组合确定所述本地文件夹散列值;
将所述远程文件系统状态和所述本地文件系统状态进行比较以确定所述远程文件系统状态内的所述远程文件夹散列值与所述本地文件系统状态内的所述本地文件夹散列值的任何差异;以及
使所述本地文件系统和所述远程文件系统内的任何共享文件夹的至少一部分同步,其中所述远程文件夹散列值与所述本地文件夹散列值不同。
2.如条款1所述的方法,其还包括:
确定特定共享文件是否包括不一致的文件散列配对。
3.如条款2所述的方法,其中所述不一致的文件散列配对包括所述特定共享文件的本地实例的本地文件散列,其与所述特定共享文件的远程实例的远程文件散列不同。
4.如条款2所述的方法,其还包括:
使所述特定共享文件与所述不一致的文件散列配对同步。
5.如条款4所述的方法,其还包括:
确定用于所述特定共享文件的所述本地实例的时间戳;
确定用于所述特定共享文件的所述远程实例的时间戳;以及
使所述特定共享文件与所述特定共享文件的最近的所述本地实例和所述特定共享文件的最近的所述远程实例同步。
6.如条款5所述的方法,其还包括:
将所述特定共享文件的所述本地实例上传到所述远程文件系统。
7.如条款5所述的方法,其还包括:
将所述特定共享文件的所述远程实例下载至所述本地文件系统。
8.如条款2所述的方法,其中所述不一致的文件散列配对包括所述特定共享文件的本地实例的丢失的本地文件散列或所述特定共享文件的远程实例的丢失的远程文件散列。
9.如条款8所述的方法,其还包括:
将所述特定共享文件的所述本地实例从所述本地文件系统删除。
10.如条款8所述的方法,其还包括:
将所述特定共享文件的所述远程实例从所述远程文件系统删除。
11.一种方法,其包括:
确定远程文件系统状态;
确定本地文件系统状态;
将所述远程文件系统状态和所述本地文件系统状态进行比较来确定共享文件夹的远程实例、共享子文件夹的远程实例或共享文件的远程实例是否包括与所述共享文件夹的对应的本地实例、共享子文件夹的对应的本地实例或所述共享文件的对应的本地实例的本地文件系统属性不同的远程文件系统属性;以及
使所述共享文件夹、所述共享子文件夹或所述共享文件同步,其中所述远程文件系统属性与所述本地文件系统属性不同。
12.如条款11所述的方法,其中所述远程文件系统属性包括被分配给所述共享文件夹的所述远程实例的远程文件夹值、被分配给所述共享子文件夹的所述远程实例的远程子文件夹值或被分配给所述共享文件的所述远程实例的远程文件值。
13.如条款12所述的方法,其中所述远程文件夹值包括远程文件夹散列,所述远程子文件夹值包括远程子文件夹散列,并且所述远程文件值包括远程文件散列。
14.如条款13所述的方法,其中基于所述远程文件系统的远程散列表来确定所述远程文件夹散列、所述远程子文件夹散列和所述远程文件散列。
15.如条款11所述的方法,其中所述本地文件系统属性包括被分配给所述共享文件夹的所述本地实例的本地文件夹值、被分配给所述共享子文件夹的所述本地实例的本地子文件夹值或被分配给所述共享文件的所述本地实例的本地文件值。
16.如条款15所述的方法,其中所述本地文件夹值包括本地文件夹散列,所述本地子文件夹值包括本地子文件夹散列,并且所述本地文件值包括本地文件散列。
17.如条款16所述的方法,其中基于所述本地文件系统的本地散列表来确定所述本地文件夹散列、所述本地子文件夹散列和所述本地文件散列。
18.一种共享文件夹和文件同步系统,其包括:
一个或多个计算机可读介质,所述一个或多个计算机可读介质上面具有同步模块和文件系统;
可操作地耦接到所述计算机可读介质的处理单元,所述处理单元适于执行所述同步模块,其中所述同步模块被配置来:
确定与远程文件系统内的共享数据结构的远程实例相关联的远程文件系统属性;
确定与本地文件系统内的共享数据结构的本地实例相关联的本地文件系统属性;
确定所述远程文件系统属性是否与所述本地文件系统属性不同;以及
使所述远程文件系统内的所述共享数据结构的所述远程实例选择性地与所述本地文件系统内的所述共享数据结构的所述本地实例同步,使得所述共享数据结构内的内容在所述远程文件系统和所述本地文件系统处相同。
19.如条款18所述的系统,其中所述共享数据结构包括共享文件夹、共享子文件夹、共享文件或其组合。
20.如条款18所述的系统,其中所述远程文件系统属性包括从与所述远程文件系统相关联的远程散列表检索的远程文件夹散列、远程子文件夹散列或远程文件散列,并且其中所述本地文件系统属性包括从与所述本地文件系统相关联的本地散列表检索的本地文件夹散列、本地子文件夹散列或本地文件散列。
结论
尽管已用特定于结构特征和/或方法动作的语言描述所述技术,但将理解,随附的权利要求书不必限于所描述的特征或动作。相反,所述特征和动作作为这类技术的示例性实现来描述。
示例性过程的操作在单独区块中被示出并且参考这些区块进行概述。过程被示出为区块的逻辑流,其中的每一个区块可表示可在硬件、软件或其组合中实现的一个或多个操作。在软件的上下文中,操作表示存储于一个或多个计算机可读介质上的计算机可执行指令,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行所表述的操作。总体上,计算机可执行指令包括例行程序、程序、对象、模块、部件、数据结构等,其执行特定功能或实现特定抽象数据类型。描述操作的顺序不意图被解释为限制,并且任何数量的所描述操作可以任意顺序执行、以任意顺序组合、被再分成多个子操作和/或并行执行以实现所描述过程。所描述过程或其部分可由与一个或多个装置104、106、108、130、132、134相关联的资源(诸如一个或多个内部或外部CPU或GPU)和/或一片或多片硬件逻辑(诸如FPGA、DSP或其他类型的加速器)执行。
上述所有方法和过程可以在由一个或多个通用计算机或处理器执行的软件代码模块中具体化并且通过所述软件代码模块来完全自动化。所述代码模块可以存储在任何类型的计算机可读存储介质或其他计算机存储装置中。所述方法中的一些或所有可以可替代地在专用计算机硬件中具体化。
除非另外特别说明,否则诸如“能够”、“可以”、“可能”或“也许”等的条件性语言在上下文内被理解为用于呈现:尽管其他实施方案不包括某些特征、元素和/或步骤,但某些实例包括某些特征、元素和/或步骤。因此,这种条件性语言通常并不意图暗示某些特征、元素和/或步骤是一个或多个实例以任何方式所要求的,或一个或多个实例必定包括用于在有或没有用户输入或提示的情况下决定某些特征、元素和/或步骤被包括在任何特定实例中或将要在任何特定实例中执行的逻辑。除非另外特别说明,否则诸如短语“X、Y或Z中的至少一个”的连接性语言被理解为用于呈现项目、项等可以是X、Y或Z或其组合。
本文所描述的和/或附图中描绘的流程图任何例程描述、元素或区块应理解为潜在地表示包括用于实现例程中的特定逻辑功能或元素的一个或多个可执行指令的代码模块、代码片段或代码部分。替代性实现被包括在本文所述实例的范围内,其中如与本领域中的技术人员所理解的那样,元素或功能可以删除、不按照所示出或论述的顺序执行,包括基本上同时执行或者逆序执行,取决于所涉及的功能。应强调,可以对上述实例做出许多改变和修改,这些改变和修改的元素应被理解为包含在其他可接受的实例当中。在本文中,所有这类修改和变化意图被包括在本公开的范围内,并且受所附权利要求书保护。
Claims (15)
1.一种方法,包括:
确定远程文件系统状态,其中所述远程文件系统状态包括远程文件夹散列值,并且其中至少部分地基于所述远程文件系统处的与共享子文件夹的远程实例相关联的子文件夹散列、与共享文件的远程实例相关联的文件散列、与共享子文件的远程实例相关联的子文件散列、与共享快捷方式的远程实例相关联的快捷方式散列或其组合来确定所述远程文件夹散列值;
确定本地文件系统状态,其中所述本地文件系统状态包括本地文件夹散列值,并且其中至少部分地基于所述本地文件系统处的与共享子文件夹的本地实例相关联的子文件夹散列、与共享文件的本地实例相关联的文件散列、与共享子文件的本地实例相关联的子文件散列、与共享快捷方式的本地实例相关联的快捷方式散列或其组合来确定所述本地文件夹散列值;
将所述远程文件系统状态和所述本地文件系统状态进行比较以确定所述远程文件系统状态内的所述远程文件夹散列值与所述本地文件系统状态内的所述本地文件夹散列值的任何差异;以及
使所述本地文件系统和所述远程文件系统内的任何共享文件夹的至少部分同步,其中所述远程文件夹散列值与所述本地文件夹散列值不同。
2.如权利要求2所述的方法,其中所述不一致的文件散列配对包括所述特定共享文件的本地实例的本地文件散列,所述本地文件散列与所述特定共享文件的远程实例的远程文件散列不同。
3.如权利要求2所述的方法,还包括:
使所述特定共享文件与所述不一致的文件散列配对同步。
4.如权利要求4所述的方法,还包括:
确定用于所述特定共享文件的所述本地实例的时间戳;
确定用于所述特定共享文件的所述远程实例的时间戳;以及
使所述特定共享文件与所述特定共享文件的最近的所述本地实例和所述特定共享文件的最近的所述远程实例同步。
5.如权利要求1所述的方法,还包括:
确定特定共享文件是否包括不一致的文件散列配对,其中所述不一致的文件散列配对包括所述特定共享文件的本地实例的丢失的本地文件散列或所述特定共享文件的远程实例的丢失的远程文件散列。
6.一种方法,包括:
确定远程文件系统状态;
确定本地文件系统状态;
将所述远程文件系统状态和所述本地文件系统状态进行比较来确定共享文件夹的远程实例、共享子文件夹的远程实例或共享文件的远程实例是否包括与所述共享文件夹的对应的本地实例、共享子文件夹的对应的本地实例或所述共享文件的对应的本地实例的本地文件系统属性不同的远程文件系统属性;以及
使所述共享文件夹、所述共享子文件夹或所述共享文件同步,其中所述远程文件系统属性与所述本地文件系统属性不同。
7.如权利要求6所述的方法,其中所述远程文件系统属性包括被分配给所述共享文件夹的所述远程实例的远程文件夹值、被分配给所述共享子文件夹的所述远程实例的远程子文件夹值或被分配给所述共享文件的所述远程实例的远程文件值。
8.如权利要求7所述的方法,其中所述远程文件夹值包括远程文件夹散列,所述远程子文件夹值包括远程子文件夹散列,并且所述远程文件值包括远程文件散列。
9.如权利要求8所述的方法,其中基于所述远程文件系统的远程散列表来确定所述远程文件夹散列、所述远程子文件夹散列和所述远程文件散列。
10.如权利要求6所述的方法,其中所述本地文件系统属性包括被分配给所述共享文件夹的所述本地实例的本地文件夹值、被分配给所述共享子文件夹的所述本地实例的本地子文件夹值或被分配给所述共享文件的所述本地实例的本地文件值。
11.如权利要求10所述的方法,其中所述本地文件夹值包括本地文件夹散列,所述本地子文件夹值包括本地子文件夹散列,并且所述本地文件值包括本地文件散列。
12.如权利要求11所述的方法,其中基于所述本地文件系统的本地散列表来确定所述本地文件夹散列、所述本地子文件夹散列和所述本地文件散列。
13.一种共享文件夹和文件同步系统,包括:
一个或多个计算机可读介质,所述一个或多个计算机可读介质上具有同步模块和文件系统;
可操作地耦接到所述计算机可读介质的处理单元,所述处理单元适于执行所述同步模块,其中所述同步模块被配置为:
确定与远程文件系统内的共享数据结构的远程实例相关联的远程文件系统属性;
确定与本地文件系统内的共享数据结构的本地实例相关联的本地文件系统属性;
确定所述远程文件系统属性是否与所述本地文件系统属性不同;以及
使所述远程文件系统内的所述共享数据结构的所述远程实例选择性地与所述本地文件系统内的所述共享数据结构的所述本地实例同步,使得所述共享数据结构内的内容在所述远程文件系统和所述本地文件系统处相同。
14.如权利要求13所述的系统,其中所述共享数据结构包括共享文件夹、共享子文件夹、共享文件或其组合。
15.如权利要求13所述的系统,其中所述远程文件系统属性包括从与所述远程文件系统相关联的远程散列表检索的远程文件夹散列、远程子文件夹散列或远程文件散列,并且其中所述本地文件系统属性包括从与所述本地文件系统相关联的本地散列表检索的本地文件夹散列、本地子文件夹散列或本地文件散列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/494,143 | 2014-09-23 | ||
US14/494,143 US9747297B2 (en) | 2014-09-23 | 2014-09-23 | Synchronization of shared folders and files |
PCT/US2015/051398 WO2016048991A1 (en) | 2014-09-23 | 2015-09-22 | Synchronization of shared folders and files |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077483A true CN107077483A (zh) | 2017-08-18 |
CN107077483B CN107077483B (zh) | 2021-03-26 |
Family
ID=55525911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580051050.5A Active CN107077483B (zh) | 2014-09-23 | 2015-09-22 | 共享文件夹和文件的同步 |
Country Status (9)
Country | Link |
---|---|
US (2) | US9747297B2 (zh) |
EP (1) | EP3198491A4 (zh) |
JP (1) | JP6419319B2 (zh) |
KR (1) | KR101974288B1 (zh) |
CN (1) | CN107077483B (zh) |
AU (1) | AU2015321508B2 (zh) |
CA (1) | CA2961249C (zh) |
SG (1) | SG11201701450RA (zh) |
WO (1) | WO2016048991A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111316619A (zh) * | 2018-08-13 | 2020-06-19 | 华为技术有限公司 | 一种照片共享方法及电子设备 |
CN111400261A (zh) * | 2020-01-21 | 2020-07-10 | 行星算力(深圳)科技有限公司 | 一种ipfs快速添加或者删除文件夹的方法 |
CN114374690A (zh) * | 2022-01-21 | 2022-04-19 | 荣耀终端有限公司 | 一种文件共享方法、通信系统和电子设备 |
WO2022116846A1 (zh) * | 2020-12-01 | 2022-06-09 | 武汉绿色网络信息服务有限责任公司 | 虚拟网元的运行数据采集方法及装置 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934241B2 (en) * | 2013-03-05 | 2018-04-03 | Hightail, Inc. | System and method for cloud-based read-only folder synchronization |
US9747297B2 (en) * | 2014-09-23 | 2017-08-29 | Amazon Technologies, Inc. | Synchronization of shared folders and files |
US9715534B2 (en) | 2015-03-23 | 2017-07-25 | Dropbox, Inc. | Shared folder backed integrated workspaces |
US10091296B2 (en) | 2015-04-17 | 2018-10-02 | Dropbox, Inc. | Collection folder for collecting file submissions |
US10885209B2 (en) | 2015-04-17 | 2021-01-05 | Dropbox, Inc. | Collection folder for collecting file submissions in response to a public file request |
US10162972B2 (en) | 2015-04-17 | 2018-12-25 | Dropbox, Inc. | Collection folder for collecting and publishing file submissions |
US9692826B2 (en) * | 2015-04-17 | 2017-06-27 | Dropbox, Inc. | Collection folder for collecting file submissions via a customizable file request |
US10713966B2 (en) | 2015-12-31 | 2020-07-14 | Dropbox, Inc. | Assignments for classrooms |
US10778707B1 (en) * | 2016-05-12 | 2020-09-15 | Amazon Technologies, Inc. | Outlier detection for streaming data using locality sensitive hashing |
CN107391161B (zh) * | 2016-05-17 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 一种JavaScript模块安装方法及装置 |
CN107267527B (zh) * | 2016-07-25 | 2021-03-19 | 未名兴旺系统作物设计前沿实验室(北京)有限公司 | 雄性育性的保持方法及其应用 |
US11048668B2 (en) * | 2016-09-09 | 2021-06-29 | Paypal, Inc. | Sensitive data management |
US11341100B2 (en) * | 2016-12-12 | 2022-05-24 | Egnyte, Inc. | System and method for eliminating full rescan synchronizations on service restarts |
US10970656B2 (en) | 2016-12-29 | 2021-04-06 | Dropbox, Inc. | Automatically suggesting project affiliations |
US10970679B2 (en) | 2016-12-29 | 2021-04-06 | Dropbox, Inc. | Presenting project data managed by a content management system |
US10402786B2 (en) | 2016-12-30 | 2019-09-03 | Dropbox, Inc. | Managing projects in a content management system |
US10970302B2 (en) * | 2017-06-22 | 2021-04-06 | Adobe Inc. | Component-based synchronization of digital assets |
CN107920130A (zh) * | 2017-12-07 | 2018-04-17 | 北京书生电子技术有限公司 | 内外网数据同步的方法和装置 |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
US11226939B2 (en) * | 2017-12-29 | 2022-01-18 | Dropbox, Inc. | Synchronizing changes within a collaborative content management system |
US10671370B2 (en) * | 2018-05-30 | 2020-06-02 | Red Hat, Inc. | Distributing file system states |
US10997202B1 (en) | 2018-07-27 | 2021-05-04 | Veeva Systems Inc. | System and method for synchronizing data between a customer data management system and a data warehouse |
US10970255B1 (en) * | 2018-07-27 | 2021-04-06 | Veeva Systems Inc. | System and method for synchronizing data between a customer data management system and a data warehouse |
US11386112B2 (en) * | 2018-08-08 | 2022-07-12 | Microsoft Technology Licensing, Llc | Visualization platform for reusable data chunks |
US10902018B2 (en) * | 2018-08-28 | 2021-01-26 | Microsoft Technology Licensing, Llc | Synchronizing in-use source data and an unmodified migrated copy thereof |
CN109582642A (zh) * | 2018-11-08 | 2019-04-05 | 网宿科技股份有限公司 | 文件存储方法、删除方法、服务器及存储介质 |
US20200192872A1 (en) * | 2018-12-13 | 2020-06-18 | Zoox, Inc. | Device message framework |
JP7164176B2 (ja) * | 2018-12-14 | 2022-11-01 | アップデータ株式会社 | 仮想ファイル処理システム及び仮想ファイル処理プログラム |
US11449471B2 (en) * | 2018-12-22 | 2022-09-20 | Google Llc | Sharing a modified file |
CN110263211B (zh) * | 2019-05-06 | 2021-09-21 | 视联动力信息技术股份有限公司 | 资源同步方法及装置 |
US11330079B2 (en) * | 2020-01-08 | 2022-05-10 | Sap Se | Environment for developing of distributed multicloud applications |
KR102484425B1 (ko) * | 2020-09-16 | 2023-01-04 | 로앤굿 주식회사 | 클라우드 기반 법률 업무 중개 시스템 |
EP4017056A1 (en) * | 2020-12-18 | 2022-06-22 | Thales DIS France SA | A method for checking if an update of a file comprising data has been done on a secure element cooperating with a terminal |
CN113656366B (zh) * | 2021-08-03 | 2024-05-03 | 北京数码大方科技股份有限公司 | 电子仓库的数据处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250903A (ja) * | 2007-03-30 | 2008-10-16 | Toshiba Corp | ファイル更新装置、プログラム及び方法 |
CN101809566A (zh) * | 2007-10-01 | 2010-08-18 | 微软公司 | 高效的文件散列标识符计算 |
US20110196900A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
US20130091097A1 (en) * | 2011-06-10 | 2013-04-11 | Microsoft Corporation | Identification of moved or renamed files in file synchronization |
US20140143446A1 (en) * | 2012-11-19 | 2014-05-22 | Palo Alto Research Center Incorporated | Data transport by named content synchronization |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734690B2 (en) * | 2003-09-05 | 2010-06-08 | Microsoft Corporation | Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system |
US7716180B2 (en) * | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
US8589574B1 (en) | 2005-12-29 | 2013-11-19 | Amazon Technologies, Inc. | Dynamic application instance discovery and state management within a distributed system |
US20090313259A1 (en) * | 2008-06-17 | 2009-12-17 | Microsoft Corporation | Container handlers for sharing and unsharing |
US20110173460A1 (en) | 2008-10-10 | 2011-07-14 | Takayuki Ito | Information processing device, method, program, and integrated circuit |
US8260742B2 (en) | 2009-04-03 | 2012-09-04 | International Business Machines Corporation | Data synchronization and consistency across distributed repositories |
US8725682B2 (en) * | 2010-09-08 | 2014-05-13 | Daniel J Young | Distribution and synchronization of digital objects |
US8650156B1 (en) | 2010-12-23 | 2014-02-11 | Amazon Technologies, Inc. | System and method for fetching the latest versions of stored data objects |
US9449014B2 (en) * | 2011-11-29 | 2016-09-20 | Dell Products L.P. | Resynchronization of replicated data |
US8984582B2 (en) * | 2012-08-14 | 2015-03-17 | Confidela Ltd. | System and method for secure synchronization of data across multiple computing devices |
US20140074783A1 (en) * | 2012-09-09 | 2014-03-13 | Apple Inc. | Synchronizing metadata across devices |
US10846074B2 (en) * | 2013-05-10 | 2020-11-24 | Box, Inc. | Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client |
US9805050B2 (en) * | 2013-06-21 | 2017-10-31 | Box, Inc. | Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform |
US9886447B2 (en) * | 2014-08-22 | 2018-02-06 | International Business Machines Corporation | Performance of asynchronous replication in HSM integrated storage systems |
US9747297B2 (en) * | 2014-09-23 | 2017-08-29 | Amazon Technologies, Inc. | Synchronization of shared folders and files |
-
2014
- 2014-09-23 US US14/494,143 patent/US9747297B2/en not_active Expired - Fee Related
-
2015
- 2015-09-22 CA CA2961249A patent/CA2961249C/en active Active
- 2015-09-22 CN CN201580051050.5A patent/CN107077483B/zh active Active
- 2015-09-22 WO PCT/US2015/051398 patent/WO2016048991A1/en active Application Filing
- 2015-09-22 EP EP15845026.2A patent/EP3198491A4/en not_active Ceased
- 2015-09-22 SG SG11201701450RA patent/SG11201701450RA/en unknown
- 2015-09-22 JP JP2017515903A patent/JP6419319B2/ja active Active
- 2015-09-22 AU AU2015321508A patent/AU2015321508B2/en active Active
- 2015-09-22 KR KR1020177007988A patent/KR101974288B1/ko active IP Right Grant
-
2017
- 2017-08-04 US US15/669,824 patent/US10482067B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250903A (ja) * | 2007-03-30 | 2008-10-16 | Toshiba Corp | ファイル更新装置、プログラム及び方法 |
CN101809566A (zh) * | 2007-10-01 | 2010-08-18 | 微软公司 | 高效的文件散列标识符计算 |
US20110196900A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
US20130091097A1 (en) * | 2011-06-10 | 2013-04-11 | Microsoft Corporation | Identification of moved or renamed files in file synchronization |
US20140143446A1 (en) * | 2012-11-19 | 2014-05-22 | Palo Alto Research Center Incorporated | Data transport by named content synchronization |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111316619A (zh) * | 2018-08-13 | 2020-06-19 | 华为技术有限公司 | 一种照片共享方法及电子设备 |
CN111316619B (zh) * | 2018-08-13 | 2021-08-03 | 华为技术有限公司 | 一种照片共享方法及电子设备 |
US11470153B2 (en) | 2018-08-13 | 2022-10-11 | Huawei Technologies Co., Ltd. | Photo sharing method and electronic device |
CN111400261A (zh) * | 2020-01-21 | 2020-07-10 | 行星算力(深圳)科技有限公司 | 一种ipfs快速添加或者删除文件夹的方法 |
WO2022116846A1 (zh) * | 2020-12-01 | 2022-06-09 | 武汉绿色网络信息服务有限责任公司 | 虚拟网元的运行数据采集方法及装置 |
CN114374690A (zh) * | 2022-01-21 | 2022-04-19 | 荣耀终端有限公司 | 一种文件共享方法、通信系统和电子设备 |
CN114374690B (zh) * | 2022-01-21 | 2023-10-31 | 荣耀终端有限公司 | 一种文件共享方法、通信系统和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
JP2017529625A (ja) | 2017-10-05 |
JP6419319B2 (ja) | 2018-11-07 |
US9747297B2 (en) | 2017-08-29 |
AU2015321508A1 (en) | 2017-04-13 |
US10482067B2 (en) | 2019-11-19 |
WO2016048991A1 (en) | 2016-03-31 |
CA2961249C (en) | 2019-07-16 |
US20160085769A1 (en) | 2016-03-24 |
SG11201701450RA (en) | 2017-04-27 |
CA2961249A1 (en) | 2016-03-31 |
CN107077483B (zh) | 2021-03-26 |
US20180314713A1 (en) | 2018-11-01 |
AU2015321508B2 (en) | 2018-04-19 |
KR20170044718A (ko) | 2017-04-25 |
EP3198491A4 (en) | 2018-02-28 |
KR101974288B1 (ko) | 2019-08-23 |
EP3198491A1 (en) | 2017-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077483A (zh) | 共享文件夹和文件的同步 | |
EP3408744B1 (en) | Providing access to a hybrid application offline | |
US10951702B2 (en) | Synchronized content library | |
AU2014342430B2 (en) | Data management for connected devices | |
US9996549B2 (en) | Method to construct a file system based on aggregated metadata from disparate sources | |
US20170149885A1 (en) | Server-side selective synchronization | |
US9298797B2 (en) | Preserving content item collection data across interfaces | |
US11163787B2 (en) | Content capture across diverse sources | |
US20090234902A1 (en) | System, method and apparatus for making content available over multiple devices | |
JP7355964B2 (ja) | 外部ロケーションの同期 | |
US20150163326A1 (en) | Approaches for remotely unzipping content | |
US11809381B2 (en) | Accessing network based content items by a mobile device while offline | |
US11496552B2 (en) | Intent tracking for asynchronous operations | |
AU2021437124B2 (en) | Intent tracking for asynchronous operations | |
JP7355959B2 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |