#cloud #filter #api #file-explorer #api-wrapper #sync

cloud-filter

Windows Cloud Filter API 的安全且惯用的包装器

4 个版本

0.0.5 2024 年 8 月 11 日
0.0.4 2024 年 8 月 10 日
0.0.3 2024 年 7 月 24 日
0.0.2 2024 年 7 月 5 日
0.0.1 2024 年 7 月 2 日

文件系统 中排名 #293

Download history 274/week @ 2024-07-02 82/week @ 2024-07-09 43/week @ 2024-07-16 219/week @ 2024-07-23 114/week @ 2024-07-30 343/week @ 2024-08-06

每月下载量 725

MIT 许可证

185KB
3.5K SLoC

cloud-filter

Windows 云同步

docs crates

这是 wincs 的一个分支,感谢 ok-nick 的出色工作。

cloud-filter 是对原生 Windows Cloud Filter API 的安全且惯用的包装器。Cloud Filter API 允许开发者在用户空间内实现自己的远程文件系统。它类似于 FUSE,尽管它包含许多只有通过其 API 才可用的第一类 Windows 功能。例如

  • 占位符文件
    • 部分文件
    • 完整文件
    • 固定文件
  • 内置到原生文件资源管理器中
    • 显示在导航窗格的最高级别
    • 将同步引擎作为兄弟分组
    • 注册/注销和连接/断开同步引擎
      • 注册到文件资源管理器
      • 连接您的文件操作处理程序
    • 自定义名称标签和图标
    • 自动/自定义加湿状态图标
    • 进度指示
      • 文件对话框
      • 在文件资源管理器中与文件内联
      • 如果用户未显式加湿占位符,则显示文件托盘
    • 缩略图和元数据
    • 顶级上下文菜单操作(甚至在 Windows 11 上)
  • 阻止特定应用从 Windows 设置中加湿占位符
  • 通过 Windows 存储感知自动释放空间
  • 监控和筛选文件操作
  • 声明广泛支持的文件属性
  • 文件被缓存在磁盘上(如果设置),允许离线访问
  • TODO:还有一个新的 API 用于自定义 UI,IStorageProviderStatusUISource

到目前为止,Cloud Filter API 已由 OneDrive、Google Drive、Dropbox 和许多其他客户端在生产中使用。

示例

以下是一个实现同步引擎的简单示例片段。更多深入的示例,请查看 示例目录

常见问题解答

为什么不是 FUSE?

不幸的是,FUSE 仅在类 Unix 操作系统上实现。幸运的是,Windows 上有许多实现文件系统的替代方案,例如 dokanywinfsp

为什么不是 dokany

dokany 提供了 Rust API,并且可以使用安全代码进行访问。然而,它的级别相对较低,并且没有 cloud-filter 支持的一等特性。

为什么不使用 winfsp 呢?

dokany 不同,winfsp 目前还没有 Rust API。也许在某个时刻它可能会有,但即便如此,也不可能具备 cloud-filter 支持的一等特性。

占位符是什么?

占位符在内部是 NTFS 稀疏文件 以及一些 重解析点魔法。简单来说,它们是空文件,旨在表示真实文件,尽管在未请求的情况下没有任何分配。它们的工作方式高度依赖于同步引擎的配置。了解如果进程要读取占位符的内容,它将被“活化”(其文件内容将被分配)。有关更多信息,请参阅 此处

我知道 cloud-filter 被维护,但微软维护 Cloud Filter API 吗?

当然,它被微软自己的 OneDrive 客户端使用。我已经报告了许多问题,并通过 微软问答 收到了快速反馈。API 中有很多未记录和未实现的部分,尽管它们对于描述的功能不是必需的。

为什么 cloud-filter 只适用于远程文件?

您当然可以使用它来处理本地文件,尽管额外的功能可能不适合您的需求。建议您改用 ProjFS,它也是由微软支持,但专门用于“高速后备数据存储”。

其他资源

如果您想做出贡献或想深入了解 cloud-filter,请务必查看这些资源

依赖项

~130MB
~2M SLoC