CN112262378A - 脱水文件的层级的水合 - Google Patents

脱水文件的层级的水合 Download PDF

Info

Publication number
CN112262378A
CN112262378A CN201980037022.6A CN201980037022A CN112262378A CN 112262378 A CN112262378 A CN 112262378A CN 201980037022 A CN201980037022 A CN 201980037022A CN 112262378 A CN112262378 A CN 112262378A
Authority
CN
China
Prior art keywords
folder
file
hydration
files
dehydrated
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.)
Pending
Application number
CN201980037022.6A
Other languages
English (en)
Inventor
J·尼科尔斯
B·斯普尔
B·D·琼斯
V·瓦利奥拉保尔阿米里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN112262378A publication Critical patent/CN112262378A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

接收对目录的操作的请求,所述请求要求对所述目录内的一个或多个文件的水合。发起所述文件夹的脱水后代文件进行水合的过程。在所述水合的过程期间,阻止在所述文件夹中引入新的脱水文件的尝试。当所述水合完成时,处理所述请求。

Description

脱水文件的层级的水合
背景技术
一些文件托管和文件同步平台被设计为通过将云数据库与客户端设备本地驱动器上的选定文件夹进行同步来自动地同步文件。当用户将新文件添加到客户端设备处的选定文件夹时,新文件被自动地从客户端设备上传到云数据库。一些文件托管平台允许文件仅作为元数据存储在客户端设备处,直到用户尝试访问所述文件为止。元数据使得能够显示针对特定文件的图标,所述图标示出了文件类型、文件大小、标题以及用于作为元数据存储的任何其他适合的信息。当用户选择特定文件以打开、读取或写入时,针对所述特定文件的文件内容数据被自动地下载到客户端设备。
出于这些考虑以及其他考虑,提出了本文进行的公开内容。
发明内容
在一些实施例中,特定文件可以是“脱水”文件,并且因此,文件内容数据不存储在本地驱动器上,而是存储在文件托管平台的云数据库中。如在本文中所使用的,术语“脱水文件”可以指代以使数据文件在文件浏览器GUI中对用户可见的格式存储在客户端设备的本地驱动器上、同时数据文件的至少一些内容数据不存在于本地驱动器中的数据文件。例如,脱水文件可以是本地存储在客户端设备上的相对小的文件,以表示被存储在云数据库中的脱水的配对文件。示例性脱水文件可以包括缩略图图像(例如,文件内容数据的尺寸减小的视觉表示)和元数据,所述元数据标识文件的名称并且指向云中的其脱水配对物。如在本文中所使用的,术语“水合文件”可以指代其元数据和文件内容数据两者都被存储在客户端设备的本地驱动器上的数据文件,使得所述数据文件能够在本地打开而无需从云数据库中取得文件内容数据。部分水合的文件是介于水合的和脱水的之间的文件。在部分水合状态下,一些但不是全部内容在本地存储。本公开中所描述的技术将针对部分水合的文件以及完全脱水的文件。
在一些实现方式中,本地驱动器可以存储与水合文件和脱水文件两者相关联的元数据,使得文件浏览器GUI能够显示文件图标,以允许用户针对水合文件和脱水文件执行各种动作。例如,文件浏览器GUI可以使得用户能够打开、移动、删除、拖放和/或复制粘贴客户端设备处的目录(例如,电子文件夹)内的脱水文件。用户还可能能够对文件夹以及文件执行这样的操作。当用户尝试打开特定的脱水文件时,所述系统可以自动地从云数据库中取得与特定的脱水文件相对应的文件内容数据。脱水文件可以在客户端设备处保持“脱水”(例如,以节省本地存储空间),直到用户请求对所述脱水文件的访问(例如,通过双击文件图标以打开脱水文件),此时可以通过下载脱水文件的文件内容数据来按需自动地“水合”所述脱水文件。以这种方式,脱水文件不会在客户端设备上占用大量空间,因为脱水文件的文件大小可能限于其对应的元数据所占面积。
在一个实施例中,当I/O请求与脱水文件相关联时,可以拦截所述I/O请求,并且可以在允许所述I/O请求继续之前对文件进行水合。然而,在一些环境中,水合过程的执行可能带来挑战。一些操作系统环境和文件拓扑场景可能使得更加难以执行水合。例如,在一些环境中,不允许在根同步文件夹之外具有脱水文件。在一些情况下,可能将整个目录移出根同步文件夹,这要求在移动能够完成之前首先对这些目录内的所有脱水文件进行水合。这样的场景的一个示例是,将照片的文件夹拖到用户的桌面上,在这种情况下,文件夹内的所有照片文件可能必须首先水合,然后才能够完成移动。
当需要水合整个目录时,在一些系统中可能根本没有或者至少以有效的方式来实现这样的转移的能力。例如,这在以下情况尤其如此:当在内核空间中发起的操作需要水合,并且内核空间不具有枚举文件层级所必需的特征时。在这种情况下,需要在内核空间和用户空间两者中处理水合任务。例如,可以为操作系统加载内核代码扩展,并且内核代码扩展不提供用于枚举水合处理所需的文件层级的特征。如果用户空间具有该能力,那么内核代码扩展必须能够从用户空间请求枚举。在本文中所公开的各种实施例中,描述了允许在内核空间与用户空间之间协调水合功能的功能。
在实施例中,当请求需要对具有至少一个脱水文件的文件夹进行水合的动作时,则可以阻止该请求,直到所有文件的水合完成为止。内核代码可以向用户空间发送针对受影响的层级的子集的请求,并且执行针对该子集的水合任务(“子集”在本文中也被称为“部分”)。水合可以以额外的子集继续,直到所有文件都被水合为止。在一个实施例中,如果存在N个文件要水合,则可以对到用户空间的水合请求进行排队,并且当先前子集完成时,可以发送针对N个文件的子集的水合的请求。子集的范围能够是0到N个文件。在一个实施例中,子集的大小可以由用户空间来确定,并且该大小仅能够在用户空间内使用。在一些情况下,内核空间不具有或者不需要了解该大小的最大值/最小值。每个子集可以提供待水合的一个目录或多个目录的快照。
在实施例中,如果文件夹正在被水合,则该文件夹下的任何拓扑改变将触发对受影响文件的进一步水合。例如,如果对已经被水合的子集做出后续改变(在文件夹的水合完成之前),则可以对经改变的部分进行水合。另外,可能不允许对该部分的脱水。在一个实施例中,改变层级的文件或目录的任何添加或移除都可以触发进一步的水合动作。例如,将具有脱水文件的子目录添加到正在经理水合的目录可能触发对所添加的子目录的进一步水合。
在实施例中,针对经受水合的每个文件夹,可以发起一个或多个票证。票证可以指代可以被用于异步地通信关于特定操作请求的信息的操作标识符。每次创建、移动或删除文件时,都可以遍历针对所述文件的父目录以确定父体是否具有有效票证。例如,可以遍历前代文件夹层级(或前代目录),以确定父体是否具有有效票证。作为另一示例,当对可能需要被水合的脱水文件执行操作时,可以在结构中向上遍历层级,以确定该文件所在的同步根。如果沿途将文件夹识别为正在被水合,则能够确定可能需要在文件上发起水合动作。通过处理在水合动作期间的拓扑改变,所述系统能够确定性地以防止与文件系统的状态竞争的方式完成针对初始条件的给定集合的水合操作连同对层级的后续改变。
在一个实施例中,如果需要,则可以一种动作而不是在子集中处理水合。另外,当可支持时,可以完全在用户空间中处理水合过程。然而,应当确保将在用户空间中所做的改变通知给内核代码,并且避免在内核空间与用户空间之间针对正在被水合的文件的访问冲突。
还可以实现允许取消挂起的文件夹水合过程并且报告水合动作的进度的功能。例如,当启动票证时,生存时间(TTL)可以与票证相关联,能够对其进行更新以指示正在被处理水合请求。
在本文中所描述的各个实施例中,公开了在内核空间与用户空间之间的通信机制,其允许目录层级被通信。另外,在一些实施例中,公开了一种在水合过程期间识别和处理拓扑的改变的方式。通过识别和处理所公开的改变,能够避免仅通过监视改变而导致的竞争状况。
因此,在本文中所公开的实施例能够通过实现对目录的高效并且可靠的水合来提高操作系统以及其扩展的可靠性和性能。用于层级结构的更可靠和有效的水合过程继而可以导致利用更少的处理器周期、更少的存储器、以及更少的功率的性能更好的计算设备。还能够通过所公开的主题的实现方式来实现在本文中未具体提及的其他技术益处。
通过阅读以下详细描述并且查看相关联的附图,这些以及各种其他特征将变得显而易见。提供本发明内容以简化形式介绍一些概念,这些概念将在下文的详细描述中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也并不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题并不限于解决在本公开的任何部分中所指出的任何或所有缺点的实现方式。
附图说明
参照附图来描述详细描述。在附图中,附图标记的最左边的数字标识该附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的项目。对多个项目中的单个项目的引用可以使用具有括号内的另一数字的参考标记(和/或不带括号的字母)来引用每个单个项目。对项目的通用引用可以使用不带字母序列的特定参考变化。
图1图示了包括文件托管平台的示例性计算架构。
图2图示了示例性数据流场景,其中由于移动而导致文件托管平台对文件或文件夹进行水合。
图3A图示了示例性用户界面和流程图,其示出了本地移动操作。
图3B图示了示例性用户界面和流程图,其示出了对脱水文件的本地文件打开动作。
图3C图示了水合文件的示例性用户界面和流程图。
图4是用于实现在本文中所公开的实施例的示例性方法的流程图。
图5是文件夹从同步根内移动到同步根外的示例性场景。
图6是根据所公开的实施例的文件夹操作的示例性场景。
图7是如在本文中进一步描述的待避免的操作的示例性最终状态。
图8是根据所公开的实施例的文件夹操作的示例性场景。
图9是根据所公开的实施例的文件夹操作的示例性场景。
图10是根据所公开的实施例的文件夹操作的示例性场景。
图11是根据所公开的实施例的文件夹操作的示例性场景。
图12是根据所公开的实施例的文件夹操作的示例性场景。
图13是根据所公开的实施例的文件夹操作的示例性场景。
图14是根据所公开的实施例的文件夹操作的示例性场景。
图15是根据所公开的实施例的文件夹操作的示例性场景。
图16是根据所公开的实施例的文件夹操作的示例性场景。
图17是根据所公开的实施例的文件夹操作的示例性场景。
图18是根据所公开的实施例的文件夹操作的示例性场景。
图19是根据所公开的实施例的文件夹操作的示例性场景。
图20是描绘了用于实现根据本公开的方法的示例性过程的流程图;
图21是描绘了用于实现根据本公开的方法的示例性过程的流程图。
具体实施方式
以下详细说明描述了使得系统能够响应于需要对整个文件夹的水合的系统动作而对文件层级进行水合的技术。在采用水合文件和脱水文件的一些系统上,文件托管平台可能在云数据库中生成文件的“水合”副本。例如,个体文件是脱水文件,针对其的文件内容数据不在客户端设备处本地存储,而是被存储在云数据库中。
如上文所描述的,术语“脱水文件”可以指代以使得数据文件在文件浏览器GUI中对用户可见的格式存储在客户端设备的本地驱动器上、同时数据文件的至少一些内容数据不在本地驱动器中的数据文件。例如,脱水文件可以是本地存储在客户端设备上的相对小的文件,以表示被存储在云数据库中的脱水配对文件。示例性脱水文件可以包括缩略图图像(例如,文件内容数据的尺寸减小的视觉表示)和元数据,所述元数据标识文件的名称并且指向云中的其脱水配对物。更一般而言,我们能够将脱水文件定义为具有元数据但是磁盘上没有全部内容的任意文件。因此,水合作用是通过将其从云中下载取回尚未在磁盘上的任何内容的动作。
如上文所描述的,术语“水合文件”可以指代这样的数据文件,针对所述数据文件,元数据和文件内容数据两者都被存储在客户端设备的本地驱动器上,使得该数据文件能够在本地打开而无需从云数据库中取得文件内容数据。部分水合状态是指文件在水合与脱水之间混合的状态。在部分水合状态下,一些但不是全部内容在磁盘上。在本公开中所描述的机制将解决部分水合文件以及完全脱水文件。
在更一般的实施例中,脱水文件可以被定义为具有元数据但是在磁盘上不具有全部内容的任意文件。水合则是通过将其从云下载来取回尚未在磁盘上的任何内容的行为。
所公开的技术相对于现有文件托管平台具有实质性优势,在现有文件托管平台中,缺少对水合目录结构(例如,电子文件夹结构和/或适用于可导航地布置多个数据文件的任何其他方案)的支持或支持低效,和/或在内核空间中没有足够的支持。现有文件托管平台和运行文件I/O管理器的相关联客户端设备的这些缺点加剧了计算资源稀缺问题,包括处理资源的过度使用以及客户端设备上本地存储空间的有限属性。因此,能够意识到,所公开的技术表示在减少与实现文件托管平台和管理云数据库相关联的处理器和存储使用方面的实质性进步。
参考图1,图示了示例性系统100,其包括客户端设备116以及被配置为维护云数据库104中的文件的副本的文件托管平台102。客户端设备116可以具有文件I/O管理器。例如,当在客户端设备116的本地驱动器128(例如,SATA型固态硬盘驱动器和/或任何其他合适的驱动器类型)对个体文件或文件夹110的移动文件或文件夹110(M)上执行操作时,取决于文件夹相对于同步根被定位的位置,系统100可以使文件托管平台102在云数据库104内定位针对文件或文件夹110的内容数据112。因此,如所图示的,被存储在云数据库104处的移动文件或文件夹110(M)的实例能够与内容数据112“水合”。在一个示例中,移动的源(原始)文件可以在移动发生之前首先进行水合,并且结果可以对移动的目的地文件进行水合。示例性文件托管平台102包括但不限于:DROPBOX、BOX、GOOGLE DRIVE、MEGA、PCLOUD、SUGARSYNC、AMAZON DRIVE和/或MICROSOFT ONEDRIVE。
在一些实施例中,文件托管平台102可以包括用于存储与云数据库104内的一个或多个文件或文件夹110相关联的数据的目录结构106。如在本文中所使用的,术语“目录结构”通常可以指代通过其文件系统可以使文件被显示给用户的任何方案。示例性目录结构包括但不限于电子文件夹结构。在图1的特定实施例中,目录结构106可以包括一个或多个文件夹108,在其中存储了一个或多个文件或文件夹110。如在本文中所使用的,术语“文件夹”可以指代在层级文件系统编目结构中定义的目录,并且可以包括对一个或多个File110和/或其他文件夹110中的个体文件和/或文件夹的引用。例如,如所图示的,所述目录结构包括第一文件夹108(1)和第二文件夹108(2),所述第一文件夹108(1)包括对文件或文件夹110的引用,可以将文件或文件夹110移动到第二文件夹108(2)以生成移动的文件或文件夹110(M)。如进一步图示的,文件或文件夹110的本地配对物在本地驱动器128处的目录结构106中的第一文件夹108(1)内被脱水。
如在本文中所使用的,术语“水合的”可以被用作描述性术语,以指示在特定存储位置(例如,云数据库104、本地驱动器128等)的文件或文件夹110的实例使其对应内容数据112也被存储在特定的存储位置。例如,在所图示的示例中,被存储在云数据库104中的文件或文件夹110的实例能够被描述为水合文件或文件夹,因为其5MB的对应内容数据112也被存储在云数据库104中。
如在本文中所使用的,术语“脱水的”可以用作描述性术语,以指示在特定存储位置处的File110的实例使其对应文件内容数据112也被存储在特定位置处。例如,在所图示的示例中,被存储在本地驱动器128中的文件或文件夹110的实例能够被描述为脱水的文件或文件夹,因为本地驱动器128中不存在其5MB的对应内容数据112。
部分水合的文件可以是其中文件在水合的和脱水的之间的文件。在部分水合状态下,一些但不是全部内容物在本地存储。在本公开中所描述的技术将解决部分水合的文件以及完全水合和完全脱水的文件。
示例性脱水文件可以是仅作为元数据138被存储在本地驱动器128上的文件或文件夹,使得客户端设备116能够显示文件浏览器GUI,所述文件浏览器GUI使得用户能够在客户端设备116处执行某些动作,客户端设备116不需要访问内容数据,诸如,例如查看脱水文件或文件夹的属性,在目录结构106内移动脱水文件或文件夹,取决于删除的类型从目录结构106中删除可能触发或可能不触发水合的脱水文件或文件夹,或者在不访问内容数据112的情况下可以执行的任何其他操作。当用户尝试打开特定的脱水文件时,系统100可以从云数据库104中自动地取得对应的内容数据112。换句话说,脱水文件或文件夹可以在客户端设备116处保持“脱水”(例如,以节省本地存储空间),直到用户请求访问脱水文件或文件夹(例如,通过双击文件图标以打开脱水文件),这时,在一些实施例中,可以按需通过下载脱水文件的内容数据112来自动地“脱水”。这样,脱水文件不在客户端设备116上占用大量空间,因为脱水文件的大小可以限于其对应的元数据所占面积。
在一些示例中,文件或文件夹能够在特定的存储位置处被部分脱水。例如,文件或文件夹可以作为元数据138以及其对应内容数据的一些而非全部被存储在本地驱动器128处。作为更具体的示例,可以将5MB文件本地存储为元数据138(例如,以使文件属性可见)以及5MB中最常访问的2MB部分。出于本讨论的目的,将在任何特定存储位置处的文件或文件夹的实例描述为“水合的”不应当被解读为指示该文件或文件夹的另一实例(或者与此有关的其他文件或文件夹)在或者甚至可以将在该特定存储位置被“脱水”。例如,在一些实现方式中,文件托管平台102被配置为存储所有文件或文件夹实例连同其对应的内容数据112,使得被存储在云数据库104内的所有文件或文件夹实例可以被称为“水合的”。换句话说,在一些实现方式中,被存储在云数据库104内的文件或文件夹实例都不被“脱水”。
在一些实施例中,客户端设备116可以包括用户应用118,用户应用118根据目录结构106提供对一个或多个File110的访问。例如,用户应用118可以使客户端设备116显示文件浏览器图形用户界面(GUI),所述GUI使得用户能够导航通过目录结构106。作为更具体但非限制性的示例,用户应用118可以使客户端设备显示针对文件夹108中的个体文件夹的图形文件夹表示,并且还可以在图形文件夹表示内显示文件图标,以使得用户能够查看文件的状态,并且在一些实施例中,可以打开、移动、删除或复制被包含在文件夹108中的文件。
在一些实施例中,用户应用118可以与操作系统(OS)120的一个或多个组件进行通信,以用于显示文件浏览器GUI和/或用于促进选择数据的生成,所述选择数据指示文件或文件夹110以及目录结构106内的目标路径,以将文件或文件夹110复制或移动到其中。OS120可以是用于管理计算机硬件和/或软件资源以及用于向用户应用118和/或其他应用(未示出)提供服务的任何合适的系统软件。示例性OS 120可以包括但不限于:MICROSOFTWINDOWS的各种版本(例如,WINDOWS 8.1或10,WINDOWS EMBEDDED STANDARD 7等)和/或macOS的各种版本(例如,macOS HIGH SIERRA等)。
在一些示例中,用户应用118可以与OS 120的文件管理器124通信。示例性文件管理器包括但不限于:MICROSOFT WINDOWS的文件EXPLORER组件和/或由APLLE,INC.开发的MACINTOSH操作系统族的FINDER组件。在一些示例中,用户应用118可以与OS 120的复制/移动应用编程接口(API)122通信。复制API 122可以是数据读取功能和数据写入功能的抽象,所述数据读取功能使客户端设备116从指定的文件或文件夹读取文件,所述数据写入功能使客户端设备116将数据写入到指定的目的地路径。在一些实施例中,移动可以被实现为重定父级(reparent)。示例性用户应用118包括但不限于:被专门配置为与文件托管平台102通信的台式客户端应用(例如,由DROPBOX开发的DROPBOX APP桌面应用、由BOX开发的BOXDRIVE桌面应用、和/或ONEDRIVE桌面客户端)。因此,能够意识到,在各种实现方式中,用户应用118可以被配置为维护目录结构106的本地实例,并且使得用户能够浏览目录结构106的本地实例而无需与文件托管平台102持续地进行通信。
在一些实现方式中,客户端设备116可以包括同步引擎126,其用于将驻留在客户端设备116处的目录结构106的本地实例与驻留在云数据库104上的目录结构106的云实例进行同步。示例性同步引擎126包括但不限于:由DROPBOX开发的SYNCHRONIZATION API、由GOOGLE开发的BACKUP AND SYNCHRONIZATION和ONEDRIVE同步引擎。因此,能够意识到,同步引擎126可以是OS 120的本地组件,或者可以是被下载并且安装到与OS 120分离的客户端设备116上的额外组件。
在各种实现方式中,同步引擎126被配置为提供对被存储在云数据库104中的至少一些文件或文件夹110的访问,而无需将与这些文件或文件夹相对应的内容数据112下载到本地驱动器128。例如,同步引擎126可以维护本地目录结构(例如,驻留在客户端设备116上的目录结构106的实例),所述本地目录结构包括与本地驱动器128缺少的第一内容数据相关联的脱水文件或文件夹的集合。在这样的示例中,云目录结构(例如,驻留在文件托管平台102上的目录结构106的实例)可以包括针对脱水文件集合中的个体脱水文件的水合配对物。因此,用户可能能够像在客户端设备116上存储的任何其他文件或文件夹一样,在文件浏览器GUI中看到与脱水文件或文件夹相关联的图标和/或其他数据。在一些实现方式中,当用户指示OS 120打开特定的脱水文件,同步引擎126自动地下载与特定脱水文件或文件夹相对应的内容数据120。例如,在用户指示OS 120打开被存储在本地驱动器128上的File110的“脱水”实例时,同步引擎126可以自动地开始与文件托管平台102通信以下载与File110相对应的5MB的内容数据112。
如进一步图示的,客户端设备116包括中央处理单元(“CPU”)130,CPU 130经由总线(未示出)连接到各种组件,诸如本地驱动器128、存储器132、输入/输出(I/O)控制器134和/或网络接口136。能够意识到,在本文中所描述的系统组件(例如,用户应用118、OS 120和/或同步引擎126)当被加载到CPU 130中并且被执行时可以将CPU 130和整体客户端设备116从通用计算系统转换成被定制以促进在本文中所提出的功能的专用计算系统。CPU 130可以由任意数量的晶体管或其他分立电路元件构成,其可以个体地或共同地呈现任意数量的状态。更具体而言,响应于被包含在本文中所公开的软件模块内的可执行指令,CPU 130可以作为有限状态机来操作。这些计算机可执行指令可以通过指定CPU 130如何在各状态之间转换来对CPU 130进行转换,由此对构成CPU 130的晶体管或其他分立的硬件元件进行转换。
本地驱动器128以及相关联的计算机可读介质为客户端设备116提供非易失性存储。尽管在本文中所包含的计算机可读介质的描述指代大容量存储设备,诸如固态驱动器和/或硬盘,但是本领域技术人员应当意识到,计算机可读介质能够是能够由诸如例如系统100的计算架构访问的任何可用的计算机存储介质或通信介质。通信介质包括计算机可读指令、数据结构、程序模块和/或在诸如载波的经调制的数据信号或其他传输结构中的其他数据,并且包括任何传递介质。术语“经调制的数据信号”意指具有以编码信号中的信息的方式改变或设置的一个或多个特性的信号。通过示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其他无线介质的无线介质。以上任何内容的组合也被包含在计算机可读介质的范围内。
通过示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机存储介质包括但不限于:RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、蓝光、或者其他光学存储设备、盒式磁带、磁带、磁盘存储装置或其他磁性存储设备、或者能够用于存储所需信息并且能够由客户端设备116访问的任何其他介质。出于权利要求书的目的,短语“计算机存储介质”、“计算机可读存储介质”以及其变型不包括波、信号和/或其他瞬时和/或无形通信介质本身。
I/O控制器134可以接收和处理来自多个其他设备的输入,包括键盘、鼠标或电子笔(在图1中未示出)。类似地,I/O控制器134可以将输出提供给显示屏(例如,以显示在本文中所描述的文件浏览器GUI)、打印机、或者其他类型的输出设备(也未在图1中示出)。网络接口136可以使得客户端设备116能够连接到一个或多个网络114,诸如局域网(LAN)、广域网(WAN)、无线局域网(WLAN)或者任何其他合适的网络,用于在客户端设备116与文件托管平台102之间传递信息。
关于图1的过程流场景,在所图示的示例中,所述过程由客户端设备116的用户发起,在客户端设备116上执行本地文件或文件夹移动操作以用于移动文件或文件夹110的脱水实例。出于说明性目的,文件或文件夹110以及经移动的文件或文件夹110(M)的脱水实例在图1中被标记为“1KB”以指示这些实例仅作为元数据被存储在本地驱动器128上(例如,没有内容数据112)。在本地移动操作中,用户已经从第一文件夹108(1)中选择了文件或文件夹110,并且已经指示第二文件夹108(2)是将文件或文件夹110移动到的目的地路径。因此,如所图示的,客户端设备116从第一文件夹108(1)内读取针对文件或文件夹110的元数据138,并且将元数据138写入到第二文件夹108(2)以在客户端设备116处生成移动的文件或文件夹110(M)。
基于已经发起本地移动操作的用户,客户端设备116可以经由通信链路140与文件托管平台102通信,通信链路140由(一个或多个)网络114促进以远程地发起与本地文件或文件夹移动操作相对应的云文件或文件夹移动操作。例如,客户端设备116可以指示与文件或文件夹110相对应的源ID二进制大对象(blob),以使得文件托管平台102能够识别文件或文件夹110的水合配对物,并且最终读取水合配对物的内容数据112以在云数据层内生成移动的文件或文件夹110(M)的水合实例。
出于说明的目的,文件或文件夹110和移动的文件或文件夹110(M)的水合实例在图1中被标记为“5MB”,以指示这些实例至少与内容数据112(以及在一些实现方式中还包括元数据138)一起存储在云数据库104中。因此,能够意识到,系统100使得用户能够在客户端设备116处移动或生成文件或文件夹的副本,并且基于此,使文件托管平台102在云数据库104中生成这些副本的备份,而无需通过网络将内容数据112从本地数据层传输到云数据层,或者无需将内容数据112从云数据层传输到本地数据层。客户端设备116被配置为基于在客户端设备116处发生的用户发起本地复制操作来远程地发起包含在云数据层内的云文件或文件夹移动操作(例如,在没有在本地数据层与云数据层之间传输内容数据的意义上)。本地复制操作可能导致水合作用。
参考图2,图示了示例性数据流场景200,其中使文件托管平台102在云数据库104中对移动的文件或文件夹110(M)的实例进行移动,而不利用内容数据112对在客户端设备116处的移动的文件或文件夹110(M)的对应实例进行水合。如所图示的,用户应用118生成API调用202以部署复制/移动API 122的功能。在一些示例中,生成API调用202的用户应用118可以是桌面客户端应用,其被配置为与文件托管平台102通信以使得用户能够访问和/或管理(在客户端设备116处)被存储在云数据库104中的文件或文件夹。例如,用户应用118可以利用被存储在云数据库中的文件或文件夹的本地实例在本地填充一个或多个文件夹。在一些示例中,用户应用118还可以被配置为自动地备份用户放置到在客户端设备116处的目录结构106中的文件或文件夹。例如,用户应用118可以自动地上传被添加到本地驱动器128上的一个或多个文件夹的新内容。
在示例性实施例中,响应于基于与文件浏览器GUI的用户交互而生成的选择数据,API调用202可以由用户应用118来生成。示例性用户交互包括但不限于:以指示用户应用118将移动的文件或文件夹110(M)移动到第二文件夹108(2)的方式,或者适合于指示用户应用118将文件或文件夹100移动到指定位置的任何其他用户交互,用户将文件或文件夹110从第一文件夹108(1)拖动到第二文件夹108(2)。
响应于API调用202,复制/移动API 122可以将移动请求204通信给文件管理器124。在一些示例中,文件管理器124可以包括本机过滤管理器,其用于管理和/或实现各种过滤驱动器,诸如,例如被配置为与同步引擎126通信的云过滤驱动器。在所图示的数据流场景200中,文件管理器124基于移动请求204来更新本地驱动器128,并且与同步引擎126进行通信,以使文件托管平台102对云数据库104进行对应的更新。更具体而言,文件管理器124将移动指令206发送到同步引擎126,其中,移动指令206包括与移动请求204相关联的各种参数。
在所图示的示例中,移动指令206包括源ID二进制大对象208,文件托管平台102能使用该源ID二进制大对象208来定位包括针对用户已经选择用于移动的文件或文件夹110的内容数据112的源文件或文件夹。例如,源文件ID二进制大对象208可以使得文件托管平台102能够识别在云数据库104处的文件或文件夹110的水合实例的源路径216。在各种实现方式中,当文件或文件夹110的水合实例在云数据库104内被创建时,源ID二进制大对象208可能已经由文件托管平台102在先前被提供给客户端客设备116。如进一步说明的,移动指令206包括目的地路径210,以标识要将文件或文件夹110移动到的特定位置。例如,目的地路径210可以指示文件或文件夹110将被移动到目录结构106内的第二文件夹108(2)。
在接收到移动指令206时,同步引擎126可以将移动指令206的至少一些方面通信给文件托管平台102,以触发在云数据层内发生的移动操作。例如,如所图示的,同步引擎126和文件托管平台102可以通信与文件或文件夹110(例如,源文件ID二进制大对象208)和/或移动的文件或文件夹110(M)(例如,目的地路径210和/或目的地ID二进制大对象220)相关联的元数据。从同步引擎126接收到的通信可以触发文件托管平台102以发起被包含在云数据层内的文件或文件夹移动操作。例如,如所图示的,通信触发文件托管平台102从源路径216读取内容数据112,并且还将内容数据112写入目的地路径210以在云数据库104中生成移动的文件或文件夹110(M)。
在一些实现方式中,同步引擎126可以将响应218通信回到文件管理器124,以通知文件管理器124文件或文件夹移动操作是否已经在文件托管平台102处被成功地发起和/或文件托管平台102是否能够使用源ID二进制大对象208来定位源文件或文件夹(例如,包括内容数据112的文件或文件夹)。在各种示例中,响应218可以包括目的地ID二进制大对象220,其能由文件托管平台102用于定位移动的文件或文件夹110(M)的新生成的水合实例。在一些实现方式中,可以由文件托管平台102将目的地ID二进制大对象220提供给同步引擎126,作为在云数据库104中生成的移动的文件或文件夹110(M)的水合实例的独有标识符。因此,能够随后在针对内容数据的请求中将目的地文件ID二进制大对象220提供回到文件托管平台102,并且借助于目的地ID二进制大对象220被包括在请求内,文件托管平台102将知道哪个内容正被请求。
如进一步图示的,文件管理器124可以将目的地ID二进制大对象220连同与移动的文件或文件夹110(M)相关联的占位符222存储在本地驱动器128中。如上文所描述的,一旦文件或文件夹移动操作已经在文件托管平台102处完成,则占位符222可以使得系统100能够在客户端设备116处提供对移动的文件或文件夹110(M)的访问。例如,即使本地驱动器128中不存在内容数据112,占位符222也可以使客户端设备116在文件浏览器GUI内显示移动的文件或文件夹110(M)的图形图标表示。然后,如果用户打开移动的文件或文件夹110(M)(例如,通过在图形图标上双击),则客户端设备116可以通过将针对内容数据的请求发送到文件托管平台102并且随请求包括目的地文件ID二进制大对象220,而从文件托管平台102自动地下载内容数据112。
在一些实现方式中,移动指令206可以包括操作标识符(ID)214(在本文中被称为票证),以使得同步引擎126和文件管理器124能够关于特定的移动请求204以及相关联的水合请求(如果需要的话)而异步地通信。在需要时,ID 214可以被用于水合过程。例如,文件管理器124可以将操作ID 214提供给同步引擎126,同步引擎126随后可以在响应218内返回操作ID 214,以指示响应218对应于移动指令206而不是一些其他移动指令(未示出)。因此,能够意识到,通过在响应内包括操作ID 214连同目的地文件ID二进制大对象220,文件管理器124能够将目的地文件ID二进制大对象220附加到正确的占位符222上。
参考图3A,图示了示例性文件浏览器GUI 300,其能够与用户应用118相关联地显示在客户端设备116处,以使得用户能够在目录结构106内输入用于文件或文件夹操作的命令。在所图示的示例中,用户正在执行拖放手势,以将第一文件或文件夹110(1)从第一文件夹108(1)移动到第二文件夹108(2)。基于拖放手势,用户应用118生成指示第一文件或文件夹110(1)的选择数据以及目录结构106内将第一文件或文件夹110(1)移动到的目的地路径。如进一步图示的,客户端设备116可以基于所述选择数据来生成移动指令206,并且最终可以根据在本文中所描述的技术将移动指令206的至少一些方面发送给文件托管平台102。
在一些实施例中,文件浏览器GUI 300可以被配置为以图形方式指示文件或文件夹110的水合状态。在所图示的示例中,文件浏览器GUI 300以图形方式表示第一文件夹108(1)内的两个文件或文件夹以及针对这两个文件或文件夹中的每个文件或文件夹的水合状态的指示。更具体而言,第一文件或文件夹110(1)利用叠加在其对应文件图标上的云图标来表示,以指示该文件或文件夹在客户端设备116处被脱水。因此,用户能够根据云图标获知客户端设备116的本地驱动器128中不存在针对第一文件或文件夹110(1)的内容数据112。此外,第二文件或文件夹110(2)利用检查标记图标来表示,指示该文件或文件夹在客户端设备116处被水合。因此,用户能够根据检查标记图标获知,与该文件或文件夹相对应的内容数据112当前被存储在客户端设备116上,从而能够在本地打开该文件或文件夹而不必从文件托管平台102取得内容数据。在各种实现方式中,用户能够指定哪些文件或文件夹在本地水合和/或哪些文件或文件夹在脱水状态下本地存储。
参考图3B,用户正在执行对表示文件或文件夹110(1)的图标的双击以打开文件或其他文件夹110(1)。基于打开命令,用户应用118生成指示应当打开第一文件或文件夹110(1)的选择数据。如进一步图示的,客户端设备116可以基于选择数据来生成打开指令207,并且最终根据在本文中所描述的技术将打开指令207的至少一些方面发送给文件托管平台102。
在所图示的示例中,文件浏览器GUI 300以图形方式表示文件或文件夹110(1)连同脱水状态的指示。更具体而言,第一文件或文件夹110(1)利用叠加在其对应图标上的云图标来表示,以指示该文件或文件夹在客户端设备116处被脱水。因此,用户能够根据云图标获知用户客户端设备116的本地驱动器128中缺少针对第一文件或文件夹110(1)的内容数据112。
参考图3C,文件浏览器GUI 300以图形方式表示文件或文件夹110(2)连同在内容数据112已经被发送到客户端设备116之后的水合状态的指示。此外,文件或文件夹110(2)利用检查标记图标来表示,指示该文件或文件夹在客户端设备116处被水合。
应当注意,尽管示例图示了对文件的操作和脱水文件的水合,但是在本文中所讨论的技术可以被应用于文件夹和文件夹的多个层级。在本文中所讨论的技术还可以被应用于水合文件和文件夹的脱水或者其组合。
在本文中公开了使具有一个或多个脱水后代文件的文件夹水合的机制。因此,根据在图1-3中所图示的内容,本公开将为文件实现的内容扩展到文件夹。文件副本通常由OS实现为对源文件的读取以及对目标的写入。以如文件副本相似的方式通过OS实现文件副本。区别在于,对于文件夹副本,OS将遍历文件夹层级,查找子文件夹和文件,并且在目标中创建它们。每个个体文件都从源中读取并且写入到目标,这在占位符系统中看起来像尝试读取文件的任何其他应用。
个体文件的移动可以被实现为文件到新父体的重定父级。不存在读取,因此占位符系统可能无法检测到在文件上发生了移动并且触发水合。然而,由于移动操作仅涉及一个文件,因此能够阻止所述移动,直到文件水合完成为止。文件夹移动还被实现为文件夹到新父体的重定父级。然而,对可以被用于触发这些文件的水合的任何后代子文件夹或该文件夹的文件没有操作。这意味着,如果将文件夹移到同步根之外,则该文件夹内的文件可能没有任何事件,因此,结果可能是脱水文件将位于同步根之外。本公开描述了解决这种场景的方式。具体而言,在一些实施例中可以包括以下一些或全部操作:
·确定已经发生了文件夹移动。
·暂时阻止文件夹移动。
·枚举文件夹内的所有文件。如在本文中进一步描述的,这可以全部或部分在用户空间中执行。
·为文件夹内的每个文件生成水合请求。像任何其他水合请求一样,该水合请求可能在同步引擎中出现。
·等待所有水合请求完成。
·重复前三个步骤,直到所有文件都被枚举和水合为止。
·解除对文件夹移动的阻止。
另外,可以检测文件夹被移动的动作,从而任何其他独立的文件或文件夹操作(例如,拓扑操作)可以触发水合。
在一些实施例中,可以在内核空间中实现所描述的技术的至少一部分,并且可以为诸如目录枚举和文件下载的任务提供用户空间支持。在一些实施例中,所公开的技术可以枚举用户空间中的文件夹层级。所述技术可以包括在内核空间与用户空间之间的通信协议以执行文件夹的水合。在一些实施例中,所述技术可以提供文件夹枚举、文件水合请求排队、以及等待文件水合完成。所述技术可以包括处理在水合正在进行时可以修改文件夹层级的拓扑更改的功能。所述技术也可以是线程安全的,因为多个线程能够一次执行相同算法。
如上文所讨论的,在一些系统中,针对文件水合的支持是可用的,但是针对处理文件夹的水合的支持是缺乏的和/或繁琐并且低效的。“文件夹水合”可以指代文件夹的所有后代文件的水合。在内核代码扩展的情况下,在一些情况下可能需要文件夹水合能力,诸如当在文件夹级别处发生的大部分文件系统操作不触发每个后代文件的移动时。而是,可能要求内核代码授权或拒绝文件夹操作。
例如,考虑将文件夹从同步根内部移动到同步根外部。在一些实施例中,可以发布删除源文件夹的授权和添加到目标文件夹的授权。然而,除非并且直到成功对正被移动的文件夹的所有脱水后代文件进行水合,否则该操作可能不被允许。如果未对正被移动的文件夹的后代文件进行水合并且授权了该操作,则该文件夹将与脱水文件一起被移动到同步根外部,这通常是不被允许的,因为在一些实施例中,位于同步根外部的脱水文件是无法使用的,因为不能够取回其内容。为了授权这样的操作,必须提供文件夹水合。在一个实施例中,授权请求可以被阻止(即,阻止文件夹操作继续进行),直到文件夹的所有脱水后代文件都已经被水合为止。
描述了用于一旦确定需要文件夹水合就实现文件夹水合的各种实施例。在一个实施例中,可以实现以下过程:
1)阻止需要文件夹水合的文件夹操作
2)枚举文件夹的所有后代文件
3)水合所有脱水的文件
4)一旦所有水合完成:如果所有文件水合成功,则通过授权文件夹操作来解除阻止该文件夹操作,否则拒绝该文件夹操作。
在实施例中,如果在用户空间中提供了适用的功能,则该文件夹的所有后代文件的枚举以及所有脱水文件的水合可以在用户空间中进行处理。例如,可能需要在用户空间中读取和写入占位符。然而,在许多环境中,这些和其他操作可能不可用,或者可能被缩减到仅在用户空间中的文件水合操作不可用的程度。
在一些实施例中,文件夹水合操作可以主要在内核空间中实现,但是文件夹枚举除外,该文件夹枚举在内核空间中可能不可用或不可能。文件的实际水合可以由同步引擎来执行。
在一个实施例中,文件夹枚举可以在子集或部分中执行。在该实施例中,所述用户空间可以将固定数量的后代文件作为枚举请求的一部分返回到内核空间。所述内核空间可以继续向用户空间发送针对更多后代文件的请求,直到用户空间以空列表做出响应为止,这指示不再有后代文件。
下文参考图4提供文件夹水合算法的示例,其图示了在一个示例性实施例中的I/O过滤器401、消息传递函数402和用户空间403。
Figure BDA0002810154590000191
文件系统通常不是静态的,并且在文件夹水合发生时可能经受改变。一旦在用户空间中捕获了待水合的文件的列表,文件夹拓扑就能够改变,使得列表过时。以下中的一些内容提供了在文件夹水合期间的拓扑改变的示例。一个示例在图5中被示出。在这种场景中,文件夹1从系统500的同步根510中移出,在文件夹3下。文件夹l具有两个脱水的后代文件(标有“云”图标),从而文件夹l应当在允许(或拒绝)移出继续之前进行水合。
图6图示了文件夹1的水合(File1被水合,如绿色的检查标记图标所示),但是现在将新的脱水文件(File3)放置在文件夹1下。如果整个文件夹的移动在File3被水合之前没有被阻止,则文件夹1的移动最终将通过(假设File2也被成功地水合)。
结果在图7中示出。如能够看到的,File3被脱水并且在同步根之外,这可能是不被允许的。
下文提供了解决该问题的一种示例性技术:对于导致向经受水合的文件夹中添加(脱水文件/文件夹)或者从该文件夹中删除(脱水文件/文件夹)的每个文件系统操作,触发对该脱水文件或文件夹的水合。这将确保除非或直到成功地完成正被添加/删除的文件/文件夹的水合,将不会实现将导致向正被水合的文件夹添加/从该文件夹删除的文件系统操作。换言之,这防止在正被水合的文件夹内创建脱水文件。
下文提供了用于实现上为所描述的技术的示例性实施例。
由于要在文件夹内水合的文件列表不是静态的,因此可以维护每个文件夹水合请求票证上的后代文件票证列表。然后,如果需要,则可以由其他线程来修改该列表。
在一个实施例中,如果所述文件中的一个文件的水合失败,则其他文件可以继续被水合。这可以防止额外代码以及在内核代码中以不同方式处理这种情况的复杂性。另外,以这种方式,如果要求对文件夹进行水合,则尽可能多的文件夹将被水合。
在一个实施例中,如果发生失败,则在水合尝试完成之后,并且在尽可能多的文件被水合之后,可以提供失败通知。在另一实施例中,可以在一旦获知失败就立即提供失败通知,同时允许剩余的文件水合在后台继续进行。在一些实施例中,当发生失败时,可以停止水合,并且可以不对其余的后代文件进行水合,并且可以停止任何进行中的后代文件水合。
如先前所提到的,内核空间中可能不存在执行文件夹枚举的能力。因此,实现所描述的技术的内核扩展可以向用户空间发送请求以代表其执行文件夹枚举,并且向内核扩展提供待水合的文件列表(待水合的文件夹的后代)。
为了避免耗尽针对密集文件夹层级的存储器,可以实现分页枚举。在该实施例中,用户空间将仅返回固定大小的后代文件列表。内核空间可以向用户空间提交针对后代文件列表的请求,直到用户空间以空列表做出响应,指示枚举的结束。
在实施例中,可以提供一种功能,其被配置为等待与文件水合相关联的票证并且等待文件夹枚举票证响应。
在实施例中,如果在给定的超时之后用户空间没有以待水合的文件列表做出响应,则可以处理取消。能够将该超时设置为固定值,因为文件夹枚举是分页的,并且枚举请求被限制为一次固定大小部分的层级。
在一些实施例中,可以提供进度报告机制。在其他实施例中,因为借助分页枚举提供了隐式进度,所以未单独实现显式进度报告机制。
在实施例中,文件夹枚举响应的处理程序可以被配置为解析响应缓存器并且填充被存储在文件夹票据上的待水合的文件列表。
在一些实施例中,可以将在用户空间中填充的列表中接收到的文件系统ID映射到内核空间中的等效标识符。
可以实现处理从内核空间接收到的事件的函数。在一些实施例中,该函数可以处理文件夹枚举事件。
对于分块文件夹枚举,可以将函数配置为获得针对多个目录条目的文件系统属性。可以设置相关标志,以请求为条目返回FSID。可以递归地调用所述函数以枚举给定文件夹的所有后代文件夹。所述函数可以被配置为执行分页枚举。在实施例中,所述函数可以被配置为枚举给定目录中的条目并且将给定缓存器填充到其大小。然后,对该函数的下一次调用可以恢复枚举剩余的条目(如果有的话)。下文说明的是使用该函数进行分块枚举的示例性实现方式,然后是示例性枚举。
Figure BDA0002810154590000211
Figure BDA0002810154590000221
Figure BDA0002810154590000231
在一个示例中,可以考虑以下层级:
FolderA
|_File1
|_File2
|_File3
|_FolderB
|_FolderC
|_File 4
|_FolderD
在该示例中,被分配用于枚举的缓存器足够小,以仅包含FolderB、FolderD、File1和File2。按照上述算法,对EnumerateFolder(FolderA)的第一次调用将产生:
Figure BDA0002810154590000241
对EnumerateFolder(FolderA)的第二次调用将产生:
Figure BDA0002810154590000242
对EnumerateFolder(FolderA)的第三次调用将首先产生:
Figure BDA0002810154590000243
因为函数返回0,所以继续从列表(FolderB_fd)中打开下一文件描述符。因此,对EnumerateFolder(FolderA)的第三次调用最终将产生:
Figure BDA0002810154590000244
对EnumerateFolder(FolderA)的第四次调用将首先产生:
Figure BDA0002810154590000245
Figure BDA0002810154590000251
因为枚举返回了0,所以我们将继续从列表(FolderD_fd)中打开下一文件描述符。因此,对EnumerateFolder(FolderA)的第四次调用将产生:
Figure BDA0002810154590000252
因为函数返回0,所以继续从列表(FolderC_fd)中打开下一文件描述符。因此,对EnumerateFolder(FolderA)的第四次调用最终将产生:
Figure BDA0002810154590000253
文件描述符的列表现在为空。通过将空文件列表发送到内核空间来结束该操作。这指示枚举的结束。
在由内核代码扩展已经从用户空间接收到待水合的文件的列表之后,会发生拓扑改变。
下文提供了与文件夹水合有关的示例性场景。在图中,文件周围的圆圈表示在初始文件夹枚举期间已经将其捕获为待水合的文件。虚线指示在文件夹水合期间将要发生感兴趣的拓扑改变。
场景1——将脱水文件添加到正被水合的文件夹的层级中
在一个示例中,文件夹1正在经受水合(例如,由于从同步根移出)。已经从用户空间接收到待水合的文件的列表。在文件夹水合完成之前,发现脱水文件即将被添加到文件夹的层级中。这会是在各种情况下引起的:
参考图8,已经在云上创建了文件(被指示为File3),并且该文件被实现为文件夹1内的脱水占位符。
参考图9,脱水文件被从同步根510内的给定位置移动到文件夹1
参考图10,同步根510内的脱水文件File3与文件夹1下的文件File2(脱水或水合)交换。
在一些实施例中,对于同步根内的每个移动和交换操作,可以检查目标文件夹以确定其是否位于正在经受水合的文件夹的层级内。如果是这种情况,则可以为正在被移动/交换的文件触发水合。
对于文件添加的情况,由于可以完全在内核代码中处理占位符的创建,因此可以检查(正被创建的文件的)父节点,并且可以确定父节点是否是位于正经受水合的文件夹的层级内的父节点。如果是这种情况,则可能使创建操作失败,或者执行下文的A和B:
A.针对占位符的队列水合。通过使用伪造的身份来隐藏实际过程的身份(其将是提供者)。
B.将文件水合票证添加到正在经受水合的前代文件夹的后代票证列表中。
通过以这种方式继续进行,能够确保在实现将文件添加到文件夹之前将该文件水合(在移动/交换的情况下)。这是因为操作(移动/交换)将被阻止,直到文件被水合。如果水合失败,则将简单地拒绝该操作,并且该文件永远不被添加到文件夹层级中。
可以通过继续检查文件水合票证列表以等待直到没有更多剩余的函数来提供对添加场景的处理。如果未执行A和B,但是创建失败,则不应当需要这样做。
场景2——从正被水合的文件夹层级中移除脱水文件
在该场景中,文件夹1正在经受水合(例如,由于移出了同步根)。已经从用户空间接收到待水合的文件的列表。在文件夹水合完成之前,发现脱水文件即将从文件夹的层级中被移除。这能够是在各种情况下引起的:
参考图11,正在从磁盘删除文件1110。
参考图12,文件File2正在从文件夹Folder1的层级移出到同步根内的另一位置Folder4。
参考图13,文件File3正在与在文件夹Folder1下的同步根内的(脱水或水合)文件File2交换。
在一个实施例中,可以如以上第一场景中所描述的那样来处理这些场景。换言之,如果在同步根内进行了移动/交换,则在移动/交换的起源位于正在经受水合的文件夹的层级内时可能触发文件的水合。另外,可能触发对删除正在经受水合的文件夹的层级内的任何文件的水合。可以借助于将文件移动到不在同步根下的回收站(垃圾箱)来进行这种水合。如果删除没有进入回收站,则可能不需要水合。这也可能适用于文件夹。
在另一实施例中,可以填充文件夹票证上的已移除后代文件的添加列表。可以将离开文件夹的层级的任何文件添加到该列表中。在对任何水合请求进行排队之前,文件夹水合算法可以首先检查该列表。如果文件位于该列表内,则将不针对文件进行排队。
通过如上所述继续进行,能够确保在实现将文件从文件夹中移除之前,该文件被水合(在删除/移动/交换的情况下)。
场景3——将脱水文件夹添加到正被水合的文件夹的层级中
在一个示例中,文件夹1正在经受水合(例如,由于移出同步根)。已从用户空间接收到待水合的文件的列表。在文件夹水合完成之前,发现脱水文件夹(即,具有一个或多个脱水后代文件的文件夹)即将被添加到该文件夹的层级中。这能够是在各种情况下引起的:
参考图14,文件夹Folder4(以及其后代文件)已经在云1400中创建并且正在文件夹Folder1内实现。
参考图15,文件夹Folder4是被从同步根510内的给定位置移动到文件夹Folder1的脱水文件夹。
参考图16,文件夹Folder4是同步根510内正与文件夹Folder1下的另一文件夹Folder2交换(脱水或水合)的脱水文件夹。
如果在同步根内正在发生文件夹移动/交换,则当移动/交换的目的地在经受水合的文件夹的层级内时可以触发文件夹的水合。每个后代文件(如果有的话)的添加可以通过文件添加处理来解决。
场景4——从正被水合的文件夹的层级中移除脱水文件夹
在一个示例中,文件夹1正在经受水合(例如,由于移出同步根)。已经从用户空间接收到待水合的文件的列表。在文件夹水合完成之前,发现脱水文件夹(即,具有一个或多个脱水后代文件的文件夹)即将从文件夹1的层级中被移除。这能够是由于多种情况引起的:
参考图17,文件夹Folder2正在从磁盘中被删除。
参考图18,文件夹Folder2正在从文件夹1的层级移出到同步根510内的另一位置,被显示为Folder4。
参考图19,文件夹Folder2正在与同步根510内的另一文件夹Folder4(脱水或水合)进行交换。
在实施例中,如果在同步根内发生文件夹移动/交换,则当移动/交换的起源在正在经受水合的文件夹的层级内时可以触发文件夹的水合。另外,可以在删除正在经受水合的文件夹的层级内的任何文件夹时触发水合。
在一个实施例中,如果更新了已移除文件的二级列表,则可以通过利用文件夹B的后代更新该列表来对文件夹执行相同操作。
场景5——在正被水合的文件夹的层级内脱水
在该示例中,发生在正经受水合的文件夹内的一个或多个水合文件的脱水。在一个实施例中,脱水请求(其将由用户空间发送并且在内核空间中被处理)可能因特定代码而失败。可以更新适当的状态位以停止重试。
可以实现确定文件/文件夹是否属于正在经受水合的文件夹的功能。
在一些实施例中,文件夹水合可以在删除时被触发。
图20图示了例程2000的各个方面,用于实现如所示的且如下文所描述的在本文中所公开的技术的各方面。应当理解,在本文中所公开的方法的操作未以任何特定次序呈现,并且可以以(一个或多个)替代次序来执行一些或全部操作并且这是可预期的。为了便于描述和说明,已经按演示次序呈现了操作。在不背离所附权利要求的范围的情况下,可以增加、省略和/或同时执行操作。
还应当理解,所示出的方法能够在任何时间结束并且不需要整体上执行。能够通过执行包含在计算机存储介质上的计算机可读指令来执行所述方法的一些或全部操作和/或基本上等效的操作,如下文所定义的。如在说明书和权利要求书中所使用的术语“计算机可读指令”以及其变型在本文中被广泛地使用以包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。能够在各种系统配置上实现计算机可读指令,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品、其组合等。
因此,应当意识到,在本文中所描述的逻辑操作被实现为:(1)在计算系统上运行的计算机实现的动作或程序模块的序列,和/或(2)互连的机器逻辑电路或计算系统内的电路模块。该实现方式是取决于计算系统的性能和其他要求的选择问题。因此,在本文中所描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑以及其任何组合来实现。
例如,例程2000的操作在本文中被描述为至少部分地由运行在本文中所公开的特征的模块来实现,并且可以是动态链接库(DLL)、静态链接库、由应用编程接口(API)产生的功能、编译程序、解释程序、脚本或者任何其他可执行指令集合。数据能够被存储在一个或多个存储器组件中的数据结构中。能够通过寻址到数据结构的链接或引用而从数据结构中取回数据。
尽管下文的图示涉及附图的组件,但是能够意识到,例程2000的操作也可以以许多其他方式来实现。例如,例程2000可以至少部分地由另一远程计算机或本地电路的处理器来实现。另外,例程2000的一个或多个操作可以替代地或另外地至少部分地由单独工作或者与其他软件模块结合工作的芯片组来实现。在以下描述的示例中,计算系统的一个或多个模块能够接收和/或处理在本文中所公开的数据。适用于提供在本文中所公开的技术的任何服务、电路或应用都能够被用于在本文中所描述的操作。
图20中的操作能够例如由图1的计算设备116来执行,如上文关于图1-19中的任何一个所描述的。
在操作2001处,确定已经接收到对文件夹的操作的请求,该请求要求对文件夹内的一个或多个文件的水合。
在操作2003处,枚举文件夹的后代文件。
在操作2005处,发起使文件夹的脱水后代文件水合的过程。
在操作2007处,在该过程期间,防止在文件夹内引入新的脱水文件的改变。
在操作2009处,响应于针对文件夹的水合完成的指示,继续处理所请求的操作。
图21图示了例程2100的各方面,该例程2100用于实现如所示的并且如下文所描述的在本文中所公开的技术的各方面。图21中的操作能够例如由图1的计算设备116来执行,如上文关于图1-19中的任何一个所描述的。
在操作2101处,确定已经接收到对目录的操作的请求,该请求要求对目录中的一个或多个文件的水合。
在操作2103处,发起对目录的脱水后代文件进行水合的过程。
在操作2105处,在水合过程期间,阻止对目录内的文件进行脱水或移动的尝试。
在操作2107处,当水合完成时,处理所述请求。
尽管已经以特定于结构特征和/或方法动作的语言描述了各种技术,但是应当理解,所附的表示中定义的主题不必限于所描述的特定特征或动作。而是,将特定特征和动作公开为实现所要求保护的主题的示例性形式。
示例性条款
可以鉴于以下条款考虑在本文中所呈现的公开内容。
示例性条款A,一种设备,包括:
一个或多个处理器;
与所述一个或多个处理器通信的存储器,所述存储器在其上存储有计算机可读指令,所述计算机可读指令当由所述一个或多个处理器运行时使所述设备用于:
确定已经接收到对文件夹的操作的请求,所述请求要求对所述文件夹内的一个或多个文件的水合;
枚举所述文件夹的后代文件;
发起对所述文件夹的脱水后代文件进行水合的过程;
在所述过程期间,防止在所述文件夹内引入新的脱水文件的改变;以及
响应于针对所述文件夹的水合完成的指示,继续处理所请求的操作。
示例性条款B,示例性条款A的设备,其中,对脱水后代文件进行水合的所述过程包括:对所述后代文件的子集进行水合直到所有后代文件都被水合。
示例性条款C,示例性条款B的设备,其中,在所述文件夹下的拓扑改变触发对所述文件夹的受影响文件的进一步水合。
示例性条款D,示例性条款A至C中的任一项的设备,其中,将具有脱水文件的子目录添加到所述文件夹触发对所添加的子目录的进一步水合。
示例性条款E,示例性条款A至D中的任一项的设备,其中,当文件被创建、移动或删除时,遍历针对所创建、移动或删除的文件的父目录以确定父体是否具有有效的水合请求。
示例性条款F,示例性条款A至D中的任一项的设备,其中,基于一个或多个条件,来取消用于对脱水后代文件进行水合的过程。
示例性条款G,示例性条款A至F中的任一项的设备,其中,生存时间(TTL)与所述过程相关联,以指示何时停止所述过程。
示例性条款H,示例性条款A至G中的任一项的设备,其中,所述请求是在内核空间中接收的,并且执行对脱水后代文件的水合的所述过程是在用户空间中执行的。
示例性条款I,示例性条款A至G中的任一项的设备,还包括存储在其上的计算机可读指令,所述计算机可读指令当由所述一个或多个处理器运行时使所述设备用于:
当在所述操作完成之前需要所述水合时,阻止所请求的操作;
以及
响应于针对所述文件夹的水合完成的指示,来解除对所请求操作的阻止。
示例性条款J,示例性条款A至I中的任一项的设备,其中,所述子集包括固定数量的后代文件,并且其中,针对每个子集执行水合,直到接收到没有更多后代文件的指示。
示例性条款K,示例性条款A至J中的任一项的方法,其中,导致将脱水文件或文件夹添加到正在经受水合的文件夹或者从所述正在经受水合的文件夹中删除脱水文件或文件夹的文件系统操作触发所述脱水文件或文件夹的水合。
尽管以上针对设备描述了示例性条款A-K,但是应当理解,在本公开的上下文中,示例性条款A至L的主题可以额外地或替代地实现为方法、系统或者经由计算机可读存储介质来实现。
示例性条款L,一种计算设备,包括:
一个或多个处理器;
与所述一个或多个处理器通信的存储器,所述存储器在其上存储有计算机可读指令,所述计算机可读指令当由所述一个或多个处理器运行时使所述计算设备用于:
确定已经接收到对目录的操作的请求,所述请求要求对所述目录内的一个或多个文件的水合;
发起对所述目录的脱水后代文件进行水合的过程;
在所述水合的过程期间,阻止在所述目录内脱水或移动文件的尝试;以及
当所述水合完成时处理所述请求。
示例性条款M,示例性条款L的计算设备,还包括:发起在内核空间与用户空间之间的水合功能以引起所述水合。
示例性条款N,示例性条款L或示例性条款M的计算设备还包括:阻止所请求的操作,直到所述水合完成为止。
示例性条款O,示例性示例L至示例性条款N的计算设备,其中,所述操作是在同步根内的移动或交换操作,还包括确定目标文件夹位于正在经受水合的文件夹的层级内。
示例性条款P,示例性条款L至示例性条款O的计算设备,还包括:确定对目录结构的改变要求对所述目录的进一步水合。
示例性条款Q,示例性条款L至示例性条款P的计算设备,其中,对所述目录结构的所述改变包括文件系统操作,所述文件系统操作导致将脱水文件或文件夹添加到正在经受水合的文件夹或者从所述正在经受水合的文件夹中删除脱水文件或文件夹。
示例性条款R,示例性条款L至示例性条款Q的计算设备,其中,所述确定包括:当文件被创建、移动或删除时遍历父目录,以确定父体是否正在被水合。
尽管以上针对计算设备描述了示例性条款L-R,但是应当理解,在本公开的上下文中,示例性条款L-R的主题可以额外地或替代地由方法或经由计算机可读存储介质来实现。
示例性条款S,一种计算机实现的方法,包括:
确定已经接收到对文件夹的操作的请求,所述请求要求对所述文件夹内的超过一个文件的水合;
发起对所述文件夹的脱水后代文件进行或多个的过程;
在所述水合的过程期间,阻止在所述文件夹内脱水或移动文件的尝试;以及
当所述水合完成时处理所述请求。
示例性条款T,示例性条款S的设备,还包括指令,所述指令当由计算设备运行时使所述计算设备用于执行包括以下项的操作:实现在内核空间与用户空间之间的通信机制,所述通信机制允许目录信息在所述内核空间与所述用户空间之间通信。
尽管以上针对方法描述了示例性条款S-T,但是应当理解,在本公开的上下文中,示例性条款S-T的主题可以附加地或替代地实现为设备或经由计算机可读存储介质实现。

Claims (15)

1.一种设备,包括:
一个或多个处理器;
与所述一个或多个处理器通信的存储器,所述存储器在其上存储有计算机可读指令,所述计算机可读指令当由所述一个或多个处理器运行时使所述设备用于:
确定已经接收到对文件夹的操作的请求,所述请求要求对所述文件夹内的一个或多个文件的水合;
枚举所述文件夹的后代文件;
发起对所述文件夹的脱水后代文件进行水合的过程;
在所述过程期间,防止在所述文件夹内引入新的脱水文件的改变;以及
响应于针对所述文件夹的水合完成的指示,继续处理所请求的操作。
2.根据权利要求1所述的设备,其中,对脱水后代文件进行水合的所述过程包括:对所述后代文件的子集进行水合直到所有所述后代文件被水合。
3.根据权利要求1所述的设备,其中,在所述文件夹下的拓扑改变触发对所述文件夹的受影响文件的进一步水合。
4.根据权利要求1所述的设备,其中,将具有脱水文件的子目录添加到所述文件夹触发对所添加的子目录的进一步水合。
5.根据权利要求1所述的设备,其中,当文件被创建、移动或删除时,针对所创建、移动或删除的文件的父目录被遍历以确定父体是否具有有效的水合请求。
6.根据权利要求1所述的设备,其中,对脱水后代文件进行水合的所述过程基于一个或多个条件来取消。
7.根据权利要求1所述的设备,其中,所述请求是在内核空间中接收的,并且对脱水后代文件进行水合的所述过程是在用户空间中执行的,所述设备还包括存储在其上的计算机可读指令,所述计算机可读指令当由所述一个或多个处理器运行时使所述设备用于:
当在所述操作完成之前需要所述水合时,阻止所请求的操作;以及
响应于针对所述文件夹的水合完成的所述指示,来解除对所请求操作的阻止。
8.根据权利要求2所述的设备,其中,所述子集包括固定数量的后代文件,并且其中,水合是针对每个子集来执行的,直到接收到没有更多后代文件的指示。
9.根据权利要求1所述的设备,其中,导致将脱水文件或文件夹添加到正在经受水合的文件夹或者从正在经受水合的文件夹中删除脱水文件或文件夹的文件系统操作触发对所述脱水文件或文件夹的水合。
10.一种方法,包括:
确定已经接收到对目录的操作的请求,所述请求要求对所述目录内的一个或多个文件的水合;
发起对所述目录的脱水后代文件进行水合的过程;
在所述水合的过程期间,阻止在所述目录内引入新的脱水文件的尝试;以及
当所述水合完成时处理所述请求。
11.根据权利要求10所述的方法,还包括:发起在内核空间与用户空间之间的水合功能以引起所述水合。
12.根据权利要求10所述的方法,其中,所述操作是在同步根内的移动操作或交换操作,还包括确定目标文件夹位于正在经受水合的文件夹的层级内。
13.根据权利要求10所述的方法,还包括:确定对目录结构的改变需要对所述目录的进一步水合。
14.根据权利要求13所述的方法,其中,所述确定包括:当文件被创建、移动或删除文件时遍历父目录,以确定父体是否正在被水合。
15.一种包括指令的计算机可读存储介质,所述指令当由计算设备运行时使所述计算设备执行包括以下项的操作:
确定已经接收到对文件夹的操作的请求,所述请求要求对所述文件夹内的超过一个文件的水合;
发起对所述文件夹的脱水后代文件进行水合的过程;
在所述水合的过程期间,阻止在所述文件夹内引入新的脱水文件的尝试;以及
当所述水合完成时处理所述请求。
CN201980037022.6A 2018-06-01 2019-05-24 脱水文件的层级的水合 Pending CN112262378A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862679670P 2018-06-01 2018-06-01
US62/679,670 2018-06-01
US16/127,147 US11010408B2 (en) 2018-06-01 2018-09-10 Hydration of a hierarchy of dehydrated files
US16/127,147 2018-09-10
PCT/US2019/033867 WO2019231836A1 (en) 2018-06-01 2019-05-24 Hydration of a hierarchy of dehydrated files

Publications (1)

Publication Number Publication Date
CN112262378A true CN112262378A (zh) 2021-01-22

Family

ID=68694100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980037022.6A Pending CN112262378A (zh) 2018-06-01 2019-05-24 脱水文件的层级的水合

Country Status (4)

Country Link
US (1) US11010408B2 (zh)
EP (1) EP3785136A1 (zh)
CN (1) CN112262378A (zh)
WO (1) WO2019231836A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023419B2 (en) 2018-08-13 2021-06-01 Sap Se Folder key management
CN115220609A (zh) * 2021-03-29 2022-10-21 北京小米移动软件有限公司 信息处理方法及装置、终端设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101535968A (zh) * 2006-11-02 2009-09-16 微软公司 合并的文件系统目录中的虚拟删除
CN105474200A (zh) * 2013-04-30 2016-04-06 微软技术许可有限责任公司 具有占位符的水合和脱水
US20180121101A1 (en) * 2016-10-28 2018-05-03 Microsoft Technology Licensing, Llc Smart Storage Policy

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546324B2 (en) * 2003-11-13 2009-06-09 Commvault Systems, Inc. Systems and methods for performing storage operations using network attached storage
US8065381B2 (en) * 2008-01-25 2011-11-22 Microsoft Corporation Synchronizing for directory changes performed while offline
GB2500152A (en) * 2011-11-29 2013-09-11 Box Inc Mobile platform file and folder selection functionalities for offline access and synchronization
US20140172783A1 (en) * 2012-12-17 2014-06-19 Prowess Consulting, Llc System and method for providing computing environment delivery service with offline operations
US9552363B2 (en) 2013-04-30 2017-01-24 Microsoft Technology Licensing, Llc File management with placeholders
US10762054B2 (en) 2016-07-22 2020-09-01 Microsoft Technology Licensing, Llc Cloud content states determination logic
US20180039652A1 (en) 2016-08-02 2018-02-08 Microsoft Technology Licensing, Llc Symbolic link based placeholders
US20180059990A1 (en) * 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files
US11368528B2 (en) 2016-09-20 2022-06-21 Microsoft Technology Licensing, Llc Dynamic storage management in cloud storage synchronization
US11372816B2 (en) * 2016-12-30 2022-06-28 Dropbox, Inc. Accessing network based content items by a mobile device while offline

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101535968A (zh) * 2006-11-02 2009-09-16 微软公司 合并的文件系统目录中的虚拟删除
CN105474200A (zh) * 2013-04-30 2016-04-06 微软技术许可有限责任公司 具有占位符的水合和脱水
US20180121101A1 (en) * 2016-10-28 2018-05-03 Microsoft Technology Licensing, Llc Smart Storage Policy

Also Published As

Publication number Publication date
WO2019231836A8 (en) 2021-01-14
EP3785136A1 (en) 2021-03-03
US20190370378A1 (en) 2019-12-05
US11010408B2 (en) 2021-05-18
WO2019231836A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
CN109117425B (zh) 用于数字资产同步的方法、系统和介质
CN109906433B (zh) 针对容器的存储隔离
US8515911B1 (en) Methods and apparatus for managing multiple point in time copies in a file system
US11586374B2 (en) Index lifecycle management
US10140461B2 (en) Reducing resource consumption associated with storage and operation of containers
US9195667B2 (en) System for on-line archiving of content in an object store
CN111433760B (zh) 用于复制云存储的文件的增强技术
US20140304313A1 (en) Terminal and method for providing application-related data
US10102083B1 (en) Method and system for managing metadata records of backups
WO2012013561A1 (en) Data sharing for file clones
US10223206B1 (en) Method and system to detect and delete uncommitted save sets of a backup
CN112262378A (zh) 脱水文件的层级的水合
US20230101774A1 (en) Techniques for performing clipboard-to-file paste operations
US11507534B2 (en) Metadata storage for placeholders in a storage virtualization system
WO2024082857A1 (zh) 数据迁移的方法、系统及相关装置
US20170286442A1 (en) File system support for file-level ghosting
US11256434B2 (en) Data de-duplication
US10445183B1 (en) Method and system to reclaim disk space by deleting save sets of a backup
US10846011B2 (en) Moving outdated data from a multi-volume virtual disk to a backup storage device
US10733142B1 (en) Method and apparatus to have snapshots for the files in a tier in a de-duplication file system
CN116909490B (zh) 数据处理方法、装置、存储系统及计算机可读存储介质
US11989094B2 (en) Minimizing data transfer and storage utilization on cloud object storage systems
US20230050976A1 (en) File system aware computational storage block

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