Linux下能否实现递归绑定挂载?优先无需额外工具的方案
Linux下能否实现递归绑定挂载?优先无需额外工具的方案
当然可以!Linux原生的mount命令就自带了实现递归绑定挂载的选项,我直接拿实际测试案例给你演示,一看就懂。
先看看初始的目录结构:
$ tree . ├── adir │ ├── afile │ └── bbind └── bdir ├── abind └── bfile
先测试普通--bind的表现
咱们先试试常规的--bind选项,看看它的递归能力:
$ sudo mount --bind adir bdir/abind $ sudo mount --bind bdir adir/bbind
执行完之后再看目录结构:
$ tree . ├── adir │ ├── afile │ └── bbind │ ├── abind │ └── bfile └── bdir ├── abind │ ├── afile │ └── bbind │ ├── abind │ └── bfile └── bfile
能看出来,--bind只绑定了当前层级的目录内容,并不会递归处理已经存在的挂载点,相当于只做了“表层”绑定,不会深入嵌套的挂载结构。
再用--rbind实现真正的递归绑定
先把刚才的挂载卸载干净,再用--rbind选项试试:
# 卸载之前的挂载 $ sudo umount adir/bbind $ sudo umount bdir/abind # 执行递归绑定挂载 $ sudo mount --rbind bdir adir/bbind $ sudo mount --rbind adir bdir/abind
这次的目录结构就完全不一样了:
$ tree . ├── adir │ ├── afile │ └── bbind │ ├── abind │ │ ├── afile │ │ └── bbind │ │ ├── abind │ │ └── bfile │ └── bfile └── bdir ├── abind │ ├── afile │ └── bbind │ ├── abind │ └── bfile └── bfile
看到没?--rbind会递归遍历所有子目录,把里面已有的挂载点也一并绑定,真正实现了递归挂载的效果——这就是原生无需额外工具的最优方案。
备注:内容来源于stack exchange,提问作者Cigarette Smoking Man
相关产品推荐
相关产品推荐

