我正在寻找像 Windows 7 中的 UnionFS 那样工作的东西。我的用例:在只读目录中拥有干净的代码工作目录,并在联合文件系统中对其进行编译,该文件系统将编译后的二进制文件在逻辑上存储在相同的位置,但物理上存储在不同的目录中。
图书馆不是这样运作的,尽管它们被接受为答案UnionFS 与 Windows 类似,虚拟合并文件夹——它们只在一个地方显示顶级目录。
代码本身非常庞大(2GB 的数据),我想避免在构建服务器中的每个构建中复制它。
答案1
答案2
有一个功能统一写入过滤器 (UWF) 覆盖,但我不知道如何使用它。
答案3
您可以使用符号链接创建一个简易的 unionfs:重现源文件的目录结构,但为文件创建链接(符号或硬链接)。只要构建系统不尝试修改源文件,这应该适合您的目的。
使用 GNU cp,它就像cp -al
或一样简单cp -as
。但我不知道是否有可以理解 Windows 链接的 GNU 工具端口。
如果您需要调用 mklink 命令,可以使用 POSIX 工具来完成(警告,直接输入到浏览器中):
cd SOURCE
find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +
find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;
我认为有一种涉及 Powershell 的 Windows 原生方法,但我不知道它是什么样子。如果您的目录树很大并且磁盘速度很快,那么可能值得研究一下,因为在 Windows 下分叉往往很慢,而上面的命令需要分叉很多。
答案4
我发现了这一点,但我真的不知道它的效果如何: