UNIX 生成目录,其中似乎包含其他目录的内容

UNIX 生成目录,其中似乎包含其他目录的内容

如果我有 2 个目录,a 和 b,有人能建议一种方便的方法来创建一个似乎同时包含 a 和 b 内容的目录而无需复制文件吗?目前,我一直在使用 ln -s * 来加载符号链接,然后在完成后删除符号链接。不过,如果子目录的内容似乎合并了,我会更喜欢它,而使用符号链接方法管理它可能需要一些调整。

如果结果目录对于应用程序来说是只读的,那就没问题。

答案1

您可以使用以下方法有效地合并目录联合金融服务通过将两个目录(在此上下文中称为分支)叠加为一个挂载点。

UnionFS 有几种实现;联合FsFuse是比较简单的一个,因为它是一个应用程序(而不是内核补丁)。

该网站包含其档案的链接。在大多数发行版中,编译源代码应该很简单。

例如,在 Ubuntu 中,安装包即可unionfs-fuse通过执行以下命令:

sudo apt-get install unionfs-fuse

安装完成后,您可以继续覆盖目录。有多种选项。我将简要解释最基本的选项:

  • 命令

      unionfs-fuse foo:bar baz
    

    覆盖目录的内容酒吧在目录中巴兹1

    此覆盖将是只读的;任何试图创建或修改巴兹将导致没有权限。错误。但是,您仍然可以创建和修改其中的文件酒吧他们自己。

    冲突以固定的方式处理:如果文件存在于更高的分支中(),它将优先于较低分支中的同名文件(酒吧)。

  • 命令

      union-fuse foo=RW:bar=RO baz
    

    使可写且酒吧(只读)。修改文件是可能的,但修改文件酒吧不会。所有新创建的文件巴兹将出现在

  • 命令

      union-fuse -ocow foo=RW:bar=RO baz
    

    与上一个命令类似。写时复制选项(cow)的效果是,尝试修改文件酒吧里面巴兹将导致文件的修改副本(或任何其他更高级别的可写分支)。

  • 使用命令

      union-fuse foo=RW:bar=RW baz
    

    所有内容均可修改。新文件将在顶部分支中创建 ()。

  • 命令

      union-fuse foo=RO:bar=RW baz
    

    允许修改文件酒吧里面巴兹,但无法创建新文件。

  • 命令

      sudo umount baz
    

    解除联合坐骑。

也可以看看:男子 unionfs-fuse


1 巴兹执行此命令之前必须存在。这也适用于所有后续命令。

相关内容