linux - 在 Linux 文件系统中创建循环

标签 linux filesystems mount

如何在 Linux 文件系统中创建循环?我想打破 Linux 文件系统的有向无环图 (DAG) 属性。这可能吗?当我在我的 Ubuntu 上安装 scratchbox 交叉编译器时,我曾经看到过这种情况。

我现在不知道如何重现它。

最佳答案

其他一些回复者已经回答了如何使用环回设备设置挂载,但是你专门问了bind坐骑,有点不同。如果你想使用绑定(bind)挂载,你只需指定 --bind在挂载命令中。例如:

mount --bind /original/path /new/path

这将使文件系统位置可访问 /original/path 可通过/new/path访问.请注意,这将跟随挂载点!例如,假设我有以下挂载点:

/something
/something/underneath/that

现在假设我做了一个 bind安装 /something :

mount --bind /something /new_something

我将能够访问像 /something/myfile 这样的文件通过路径 /new_something/myfile .但是我不能访问/something/underneath/that/otherfile这样的文件通过路径 /new_something/underneath/that/otherfile .您必须设置单独的 bind为每个文件系统挂载;或者如果你有一个相对较新的内核,你可以使用 rbind挂载,确实遵循挂载点:

mount --rbind /something /new_something

关于 rbind 的一个警告挂载:它们不处理在 rbind 之后挂载文件系统的情况是设置。也就是说,假设我有一个这样的坐骑:

/something

然后我设置我的 rbind如上所述,然后我挂载 /something/underneath/that : rbind不会神奇地通过 rbind 使新坐骑可见地点。另请注意,显然由于内核中的错误,您无法卸载 rbind。挂载。

此外,以防万一您的意思是“如何使用 mount(2) 系统调用设置绑定(bind)挂载?”:您必须指定 MS_BIND标志(在 mount.h 中定义)当您调用 mount(2) 时对于常规 bind山。对于 rbind安装,您必须指定 MS_BIND和文件 MS_REC标志(在 linux/fs.h 中定义)。

希望对你有帮助,

埃里克梅尔斯基

关于linux - 在 Linux 文件系统中创建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730589/

相关文章:

java - 如何禁用 JFileChooser 中的目录打开?

java - Windows:使用 File.listRoots 显示映射的网络驱动器

带有 sudo 和文件路径空间的 Java exec 挂载

android - 为什么我不能使用 adb 命令将 sqlite 推送到 Android?

linux - 等待/dev/disk/by-label 在 SD 插入后填充

linux - grep nmap 输出,有条件地打印选定的行

java - 在 Linux 中从 java 执行 shell 脚本(使用 perl 和其他 shell 脚本的 shell 脚本)

c - 如何在Linux 3.5.4中从自定义系统调用中调用系统调用

c - 在 GDB 中反汇编 C 函数。 GAS 组装说明的澄清

c++ - 在linux/unix下,如何使用c++发现一个目录是否是一个链接?