在 Ubuntu 中,有没有办法在没有 unionfs 或 aufs 的情况下虚拟合并两个文件夹?

Hou*_*ell 9 ubuntu symlink

我有一个源代码控制系统在工作,我无法修改它在不幸的地方散布了一堆文件。我的 IDE 期望这些文件夹位于一个统一的位置。通常我只会对所有内容进行符号链接,但更糟糕的是,某些文件夹必须递归合并。我保证没有重叠的文件名,但我们谈论的是数千个文件,比我手工做的要多。

我已经研究过 unionfs 和 aufs,但它是一台公司机器,所以不用考虑内核(更不用说这些 wang chung 的“入门”文档了)。

有没有另一种方法可以做到这一点?

小智 14

我不知道您正在使用的工具以及它们如何处理符号链接,但您可以使用符号链接(或硬链接,如果需要)自动“复制”整个树,使用-s选项cp(或-l硬链接)。


让我们看看下面的例子。

.
???1
? ???s -> x
? ???X
? ???是
? ???z
? ???1
???2
    ???一种
    ? ???2
    ???乙
    ???C

如果您希望将符号链接1/文件2/放在当前目录中,那么您只需执行以下操作:

cp -ans "$PWD/1/"* 2/
Run Code Online (Sandbox Code Playgroud)

现在2/看起来像:

.
...
???2
    ???一种
    ? ???2
    ???乙
    ???C
    ???s -> /home/przemoc/links/1/s
    ???x -> /home/przemoc/links/1/x
    ???y -> /home/przemoc/links/1/y
    ???z
        ???1 -> /home/przemoc/links/1/z/1

使用cp选项的说明:

  • -a或以--archive
    递归方式保留属性、链接和复制目录(实际上是 的别名-dR --preserve=all
  • -n--no-clobber
    防止覆盖现有文件
  • -s--symbolic-link
    制作符号链接而不是文字复制

在这种情况下,源文件路径必须是绝对的(这就是我使用的原因$PWD),因为cp“只能在当前目录中建立相对符号链接”。