标签: virtualfilesystem

如何构建内存中的虚拟文件系统,然后将此结构写入磁盘

我正在寻找一种在Python中创建虚拟文件系统以创建目录和文件的方法,然后再将这些目录和文件写入磁盘。

使用PyFilesystem,我可以使用以下内容构造一个内存文件系统:

>>> import fs
>>> dir = fs.open_fs('mem://')
>>> dir.makedirs('fruit')
SubFS(MemoryFS(), '/fruit')
>>> dir.makedirs('vegetables')
SubFS(MemoryFS(), '/vegetables')
>>> with dir.open('fruit/apple.txt', 'w') as apple: apple.write('braeburn')
... 
8
>>> dir.tree()
??? fruit
?   ??? apple.txt
??? vegetables
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够执行以下操作:

dir.write_to_disk('<base path>')
Run Code Online (Sandbox Code Playgroud)

要将此结构写入磁盘,<base path>将在其中创建此结构的父目录在哪里。

据我所知,PyFilesystem无法实现这一目标。还有什么我可以代替的,还是我必须自己实现?

python filesystems vfs virtualfilesystem python-3.x

4
推荐指数
1
解决办法
2786
查看次数

如何在 macos 上实现虚拟文件系统?

我已经看到一些应用程序能够在 MacOS 上的 Finder 中将自己表示为外部磁盘。通常,这些是云存储应用程序,例如PCloud Drive和WD Discovery。我想知道他们是如何做到这一点的。

我意识到云存储可能只是实现了一些远程文件系统协议,例如 Samba 或 AFP。但是我仍然不太明白应用程序如何将文件系统直接挂载到 Finder 中。另外,如果不依赖网络存储,是否有更有效的方法来挂载虚拟文件系统?

macos finder virtualfilesystem kernel-extension

4
推荐指数
1
解决办法
258
查看次数

如何在 Rust 中创建虚拟文件系统?

我正在开发一个应用程序,它应该通过网络安装一个文件夹。它应该显示类似于 SMB 挂载的文件夹,只是服务器不使用 SMB 协议。类似于:服务器 A 是一个 HTTP 服务器,包含文件,客户端 B 应该能够挂载这些文件,以便能够直接访问它们,而无需先下载它们(流式传输)。因此,客户端应该能够流式传输文件,即访问任意位置的文件。此外,存储在服务器 A 上的文件以特定方式进行编码、压缩、加密和打包,因此我需要在将它们呈现给虚拟文件系统之前对其进行解码(进行一些内部处理)。客户端应具有只读访问权限。我希望客户端可以在 Windows 和 Linux 上使用。它应该看起来像这样:

客户端已安装一个文件夹并希望访问位置 1248989 处的 /virtualfolder/data.file。存储在服务器上的数据被分割成任意长度的块(假设它是 1 MB)。然后,我需要下载文件中与字节 1000000 - 1999999 相对应的部分,对其进行解码、缓存,然后用户可以访问该数据。

当然,我的解码过程是在内部完成的,我只需要一个 API 在操作系统上创建一个虚拟文件夹(或文件系统),该文件夹显示文件的名称及其大小并让用户访问它们。

它应该如下所示: [OS] <-虚拟文件系统 API-> [客户端] <-某些协议-> [服务器]

访问文件应该如下所示:

[操作系统] 我想从文件 /vfs/somefile.tar 获取字节 0-255

[客户端] 从服务器的文件 /vfs/somefile.tar 中检索块 0-999999。这对应于块 B5F997084DC8687。下载 B5F997084DC8687 并对其进行解码。

[客户端] 这里是 /vfs/somefile.tar 从 0-255。

[操作系统] 我想从文件 /vfs/somefile.tar 获取字节 256-511

[客户端] 这对应于 B5F997084DC8687。已经下载并缓存了该文件。

[客户端] 这是来自 256-511 的 /vfs/somefile.tar。

我认为非常简单。有没有一个简单的 API 可以处理这些事情?

linux windows virtualfilesystem rust

3
推荐指数
1
解决办法
3454
查看次数

macFuse 需要在 Mac OS 11+ 上使用恢复模式

自 Mac OS 11 Big Sur 发布以来,Apple 仅允许在恢复模式下安装 kext 驱动程序。它还禁止从 Apple Store 安装 kext 驱动程序。我猜这是 macFuse 的终结,至少对于虚拟/云文件系统而言。迁移路径是什么以及如何为 Mac OS 11+ 构建虚拟文件系统,尤其是文档管理和云存储,类似于 OneDrive、DropBox 等。

我也可以猜测类似的问题也可能出现在 Windows 上。我可以想象,微软将遵循苹果的路径,在未来的版本中禁止 Windows 上的文件系统驱动程序和过滤器用于这些目的。如果发生这种情况,任何有关未来迁移的提示将不胜感激。

filesystems macfuse virtualfilesystem virtual-drive kernel-extension

3
推荐指数
1
解决办法
141
查看次数

使用 java nio 在 zip 中移动文件树时出现 nosuchfileexception

我在使用 java nio 遍历 zip 文件的 VFS(虚拟文件系统)的文件树时遇到异常,这是我的代码:

public static void list(String zipFilePath) throws IOException{
    FileSystem fs = FileSystems.newFileSystem(Paths.get(zipFilePath), null);
    Path startPath = fs.getPath("/");

    Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
            System.out.println("Dir : " + dir);
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            System.out.println("\t->File : " + file);
            return FileVisitResult.CONTINUE;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

异常表示文件不存在,但我已经解压缩了存档(zip),并且文件在那里......知道为什么吗?

这是例外:

java.nio.file.NoSuchFileException: /Dir1/Dir2/Dir3/Dir4/ExcelFile.xlsm
at com.sun.nio.zipfs.ZipPath.getAttributes(ZipPath.java:657)
at com.sun.nio.zipfs.ZipFileSystemProvider.readAttributes(ZipFileSystemProvider.java:285)
at java.nio.file.Files.readAttributes(Files.java:1669)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:105)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at …
Run Code Online (Sandbox Code Playgroud)

java zip nio virtualfilesystem

2
推荐指数
1
解决办法
2803
查看次数

OneDrive 中“虚拟文件”背后的 Windows API

OneDrive 文件夹可以显示文件,就像存在一样,但它们不在磁盘上。

https://support.microsoft.com/en-us/office/save-disk-space-with-onedrive-files-on-demand-for-windows-10-0e6860d3-d9f3-4971-b321-7092438fb38e

我想以编程方式创建一个类似的文件夹。OneDrive 客户端使用什么 API?

winapi virtualfilesystem onedrive

1
推荐指数
1
解决办法
1247
查看次数