我有一个Linux(红帽)系统上的三个目录。 说/ usr / local / one,/ usr / local / 2和/ usr / local / 3。 我想有一个机制,就像一个目录,它将一,二,三的内容组合到/ opt / oneTwoThree中,而不用物理地移动它们的文件内容。
即..
$ find /usr/local/ /usr/local/one /usr/local/one/aaa /usr/local/one/bbb /usr/local/three /usr/local/three/fff /usr/local/two /usr/local/two/ccc /usr/local/two/ddd /usr/local/two/eee $ find /opt/oneTwoThree /usr/local/oneTwoThree /usr/local/oneTwoThree/aaa /usr/local/oneTwoThree/bbb /usr/local/oneTwoThree/fff /usr/local/oneTwoThree/ccc /usr/local/oneTwoThree/ddd /usr/local/oneTwoThree/eee
您可以使用似乎是积极开发的UnionFS ,或者在目录被分开的硬盘驱动器MHDDFS的情况下 ,但我看到较less的引用到最后一个。
编辑:有一个维基百科文章与更多的友好的UnionFS信息
如果目录内容大多是静态的,那么可以通过符号链接来实现,即将三个目录中的每个文件都链接到第四个目录。
对于其他任何人都会遇到的这个老问题,Inotify可以用来监视目录并自动创build链接。
你可以将/ usr / local / {0ne,2,3}的内容符号链接到/ usr / local / 4中,但这不是很优雅。 如果在任何原始目录中都创build了很多新的文件或目录,则必须有某种方法(可能通过inotifyd?)来更新符号链接。 它会起作用,但对我来说感觉很糟糕,我甚至不愿意提出这个build议。
有些(几年前)我有一个类似的问题(想要安装开源的东西到不同的目录 – 类似于今天使用的/ opt / *scheme – 但不必更新$ PATH)
对我来说,解决scheme是使用CMU软件库自动创build和维护/ usr / local / *层次结构,其中包含所有使用链接和/或符号链接的/ opt-like内容。