本文仅分析技术信息,不提供代码!
1.用户态实现文件系统
1. Linux上要自主实现文件系统一般会采用fuse,主要是能在用户态进程直接开发实现,不需要开发内核驱动模块,这部分官方示例代码和开源代码太多了,也没什么好讲的,另外MAC上也有fuse开源项目。
2. Windows也有开源项目dokany,再加上其提供的fuse兼容层,基本上和fuse使用相同,而文件系统方面也有开源的fatfs可以使用。
但是,dokany仍然需要安装驱动,这意味着需要数字签名,对小公司和个人开发者来讲成本略高,当然使用官方提供的已签名版本也可以,只是仍然存在不可控的风险。
2.Windows官方提供的FUSE模块
而2018年的Win10更新上微软新增了一个叫ProjFS模块,本质上是GVFS项目的衍生,微软收购GitHub后开发新版本git工具,原本的git是基于命令或者简单的GUI界面操作,总体上不是很直观,所以微软基于VFS和git云存储,开始了一个GVFS项目,旨在将git工程文件直接映射到微软的资源管理器中(Explorer),GVFS其中的一个模块叫GvFlt,是一个文件系统过滤驱动(dokany的驱动也是这一类),到了2018年,GvFlt独立出来一开始内部叫Primes,简称为Windows投影文件系统,后来改名叫ProjFS,即Windows Projected File System的简称。
总体上可以简单认为,ProjFS模块相当于dokany的微软版,当然细节上很多是围绕Git仓库的管理实现的,所以在使用上和fuse类还是有差距,且在开发过程的理解上可能fuse或dokany更直观一些,但这毕竟是官方原生支持,相对更方便,没有驱动方面的顾虑。
标签:git,微软,Windows,文件系统,fuse,FUSE,dokany,官方版 From: https://www.cnblogs.com/caibirdy1985/p/17302429.html