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 |
|
在 文件系统 中排名 #293
每月下载量 725
185KB
3.5K SLoC
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 上有许多实现文件系统的替代方案,例如 dokany
或 winfsp
。
为什么不是 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
,请务必查看这些资源
- 构建支持占位符文件的云同步引擎
- 集成云存储提供程序
- 包含 "cfapi" 的微软问答
- Win32 API
- UWP API
- 并非所有
Windows.Storage.Provider
命名空间中的类都被云提供程序使用。
- 并非所有
依赖项
~130MB
~2M SLoC