在Ubuntu中,有没有一种方法可以虚拟合并两个文件夹而无需unionfs或aufs?

在Ubuntu中,有没有一种方法可以虚拟合并两个文件夹而无需unionfs或aufs?

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

我研究过 unionfs 和 aufs,但它是一台公司机器,所以不需要对内核进行修改(更不用说这些 wang chung 的“入门”文档)。

还有其他方法可以做到这一点吗?

答案1

我不知道您确切使用的工具以及它们对符号链接的行为方式,但您可以使用符号链接(或硬链接,如果需要)自动使用选项-scp-l硬链接)“复制”整个树。


让我们看一下下面的例子。


├── 1
│ ├── s -> x
│ ├── x
│ ├── y
│ └── z
│ └── 1
└── 2
    ├── 一个
    │ └── 2
    ├── b
    └── c

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

cp -ans "$PWD/1/"* 2/

现在2/看起来像:


...
└── 2
    ├── 一个
    │ └── 2
    ├── b
    ├── 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“只能在当前目录中创建相对符号链接”。

相关内容