文件系统'覆盖'

时间:2008-10-01 09:56:03

标签: linux file filesystems

具体用例: 在Eclipse IDE中,可以通过将插件的文件复制到$ECLIPSE_HOME/plugins目录中来添加新的“插件”。但是,我希望在没有额外插件的情况下保持原始Eclipse安装“干净”,因为我希望有时自己运行这个基本安装。

有什么方法可以避免复制文件(因此无法运行干净版本),而是在逻辑上“覆盖”另一个目录的内容,使其在运行时看起来位于目录中?

e.g。类似的东西:

gravelld@gravelld-laptop:~$ ls $ECLIPSE_HOME/plugins/
org.junit_3.8.2.v200706111738
org.junit4_4.3.1
org.junit.source_3.8.2.v200706111738
gravelld@gravelld-laptop:~$ ls myplugins/
org.dangravell.myplugin.jar
gravelld@gravelld-laptop:~$ overlay myplugins/ $ECLIPSE_HOME/plugins
gravelld@gravelld-laptop:~$ ls $ECLIPSE_HOME/plugins/
org.dangravell.myplugin.jar
org.junit_3.8.2.v200706111738
org.junit4_4.3.1
org.junit.source_3.8.2.v200706111738

另一个用例可能是修补等等......

可以使用符号链接或mnt完成此操作吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用覆盖文件系统。我在Linux中知道的三个覆盖文件系统是unionfsaufsminifo

Unionfs包含在最近的Ubuntu内核中。

答案 1 :(得分:1)

查看 Manage your eclipse environment 文章,尤其是方法3

  

创建链接文件夹以管理产品扩展

     

如果您的文件系统上有产品扩展,就像我们在方法1中所做的那样,您可以在Eclipse程序目录中创建一些简单文件,以通知Eclipse它需要检查这些目录中的插件。

     

首先,在Eclipse安装文件夹(例如/ opt / eclipse)中创建一个名为links的目录。在此文件夹中,您可以创建* .link文件(例如,emfPlugins.link)。每个链接文件都指向产品扩展位置。 Eclipse将在启动时扫描此链接文件夹,并在链接文件指向的每个产品扩展中找到插件。

即使新的p2配置系统完全不同,eclipse3.4仍然支持这一点。


现在已经知道“'链接'目录机制”了,这意味着vanilla eclipse和带有自定义常见插件的eclipse之间的区别就在于'links'目录的存在。

那么,为什么没有一个带有符号链接的'香草日食分布','链接',指向../links?

任何获得该日食的用户最初都没有“链接”目录,因此它将作为一个vanilla发行版运行。但是,一旦用户创建了一个链接目录或者创建另一个符号链接到一个公共的远程“链接”目录,那么同一个发行版将会获取公共插件的远程目录......

/path/links -> /remote/links/commonPlugins
/eclipse/links -> ../links

最后,如果您使用给定的组“aGroup”创建“/ remote / links / commonPlugins”,并使用“750”掩码保护它,那么您将拥有一个 eclipse设置是:

    对于'id -a'不包含'aGroup'的任何用户,
  • vanilla eclipse
  • 带有“aGroup”的任何用户部分的插件的eclipse