我在Linux上有一系列目录,每个目录都包含大量文件和数据。这些目录中的数据是自动生成的,但是多个用户需要对该数据执行更多分析并生成更多文件,更改结构等。
由于这些数据目录非常大,我不希望有几个人制作原始数据的副本,所以我想制作一份目录副本并链接到新原始数据。但是,我希望任何更改只保留在新目录中,并保留原始只读。我不想只链接我定义的特定文件,因为这些目录中的数据是多种多样的。
所以我想知道是否有办法通过链接到原始目录来创建目录副本,但只保留新目录中的任何已更改文件。
答案 0 :(得分:21)
事实证明这就是我想要的:
cp -al <origdir> <newdir>
它将复制整个目录并创建指向原始文件的硬链接。如果删除原始文件,则复制的文件仍然存在,反之亦然。这将完美地工作,但我发现newdir必须不存在。只要原始文件是只读的,您就可以创建原始目录的相同安全副本。
答案 1 :(得分:2)
但是,由于您正在寻找人们可以回写更改的方式,UnionFS可能就是您正在寻找的内容。它提供了将只读和读写位置组合成一个的方法。
Unionfs允许任意混合的只读和读写分支,以及在扇出的任何地方插入和删除分支。
最初我打算推荐这个(我经常使用它):
假设权限不是问题(例如,只需要阅读),我建议将它们绑定到位。
mount -B <original> <new-location>
# or
mount --bind <original> <new-location>
<new-location>
必须作为文件夹存在。