linux - 使用 FUSE 时如何将所有现有目录挂载到挂载点?

标签 linux filesystems mount fuse deduplication

我正在尝试使用 FUSE 构建一个具有重复数据删除功能的新文件系统。

我尝试运行 FUSE 示例部分中提供的 fusexmp_fh.c。但是,在挂载点挂载文件系统后,我可以看到挂载点内的所有现有目录。我不需要那些目录。 我希望挂载的文件系统为空。

我尝试搜索 fusexmp_fh.c 但找不到添加现有目录的位置。

  • 有人可以向我解释一下这是如何工作的吗?

还有

  • fusexmp_fh.c 可以作为构建文件系统的基础吗?
  • 它是否具备所有基本功能?

最佳答案

你是说你把文件系统挂载到一个非空的目录上,你能看到目录之前的内容? (在这种情况下,答案是“不要挂载到非空挂载点”。通常它会抛出一个错误告诉你不要那样做。)

如果您看到的是您用作基本目录的目录和目录中的文件,这是回送文件系统的正常行为,也就是 fusexmp_fh.c .示例文件系统采用挂载点,并将该挂载点上的所有命令传递到后备目录。如果您使用其中包含文件的后备目录,您现在将在两个位置看到这些文件,即原始位置和安装的 fuse 目录。

如果您想了解目录填充的工作原理,请先查看 readdir,然后查看它返回的 stat 项是如何构建的。其中每一个都是一个目录条目。

是的,您可以使用 fusexmp_fh.c 作为基本文件系统的基础,它具有所有必要的部分,但不支持扩展元数据。 (但是添加它对于环回来说是微不足道的。)

关于linux - 使用 FUSE 时如何将所有现有目录挂载到挂载点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325773/

相关文章:

image - 用于在社交网站中存储图像的文件层次结构?

ubuntu - Vagrant:同步文件夹/var/cache/apt

mount - 是否可以将 USB 设备暴露给 LXC/Docker 容器?

linux - 使用 Maven 2.x 设置环境变量

linux - Bash/sh 'if else' 语句

c - 如果我使用linux库用C编译程序,我可以在windows上使用它吗?

linux - 超时后,杀死该进程及其所有子进程

linux - Overlayfs:从 "lower"恢复已删除或更改的文件

linux - 如何创建 64 位 inode?

linux - 使用 Go 在 Linux 中以编程方式安全地挂载网络位置