Windows的类似UnionFS的文件系统


12

我正在寻找类似于Windows 7中的UnionFS的东西。我的用例:将干净的代码工作目录放在一个只读目录中,然后将其编译到一个工会文件系统中,该文件系统将已编译的二进制文件逻辑上存储在同一位置,但是物理上不同的目录。

尽管在Windows上的UnionFS中都接受了库,但实际上库不能以这种方式工作,实际上是合并文件夹 -它们仅在一个位置显示顶级目录。

代码本身非常庞大(2GB的数据),我想避免在构建服务器中为每个构建都复制它。


哦,糟糕 :-/我正在尝试自己解决完全相同的问题,并且阅读不够仔细。我将删除我的评论。我对Windows平台几乎不熟悉。:-/
Omnifarious

Answers:


2

您可以使用符号链接来伪造吗? http://en.wikipedia.org/wiki/NTFS_symbolic_link 它没有回答确切的问题,但是我认为它将解决您给出的用例。


我看不出来...您能解释一下吗?
liori 2010年

我不知道您的构建树的结构方式,但假设它像src,src / bin,src / obj之类,那么您可以将bin和obj作为符号链接,链接到您想要的代码所在位置。只要确保您的构建没有完全删除这些文件夹即可。或者,使src为指向“只读”的符号链接,然后使只读中的链接返回。无论哪种方式,您都应该能够使其工作。除非我完全想念您的情况。
MikeBaz-MSFT 2010年

我不控制构建过程,它可以随处编写。
liori 2010年

@liori:对于这种用例,您可以复制目录并为每个文件(类似cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;Windows或类似的文件)创建符号链接。
吉尔(Gilles)“所以别再作恶了”,2010年

@吉尔斯:你让我觉得复印不是一个糟糕的解决方案……(此外,你能把它变成答案吗?)
liori

2

您可以使用符号链接创建穷人的unionfs:重现源代码的目录结构,但为文件创建符号链接(符号链接或硬链接)。只要构建系统不尝试修改源文件,这就应该适合您的目的。

使用GNU cp,就像cp -al或一样简单cp -as。但是我不知道是否有大量的GNU工具可以理解Windows链接。

如果需要调用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下的分支速度通常很慢,并且上面的命令需要大量的分叉。


for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F使用junctionsysinternals 的工具,本机方式将类似于。
MSalters

@MSalters符号链接现在是Windows的本地链接。和NTFS连接不是同一回事。
尼克·惠利

@NickWhaley:确实,路口本质上是硬链接。
MSalters 2015年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.