当前位置: 首页>>技术教程>>正文


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

,

问题描述

我有一个无法修改的源代码控制系统,该系统分散了很多文件到不幸的地方。我的IDE希望这些文件夹位于一个统一的位置。通常,我只是将所有内容符号链接在一起,但为了使情况更糟,必须递归合并某些文件夹。我保证没有重叠的文件名,但是我们谈论的是成千上万个文件,这比我要手工完成的更多。

我已经研究了unionfs和aufs,但这是一台公司机器,因此不必担心内核(更不用说这些wang chung的”getting started”文档了)。

还有另一种方法吗?

最佳方案

我不知道您确切使用的工具以及它们与符号链接的行为,但是您可以使用符号链接(或硬链接,如果需要)使用cp-s选项(或对于硬链接为-l)自动使用符号链接”copy”整个树。


让我们看下面的例子。


.
├── 1
│   ├── s -> x
│   ├── x
│   ├── y
│   └── z
│       └── 1
└── 2
    ├── a
    │   └── 2
    ├── b
    └── c

如果您希望将1/文件共符号链接到当前目录中的2/,则只需执行以下操作:

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

现在2/看起来像:


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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11526.html,未经允许,请勿转载。