如何使用链接在Linux上创建目录的副本

时间:2012-07-12 15:58:00

标签: linux directory hardlink

我在Linux上有一系列目录,每个目录都包含大量文件和数据。这些目录中的数据是自动生成的,但是多个用户需要对该数据执行更多分析并生成更多文件,更改结构等。

由于这些数据目录非常大,我不希望有几个人制作原始数据的副本,所以我想制作一份目录副本并链接到新原始数据。但是,我希望任何更改只保留在新目录中,并保留原始只读。我不想只链接我定义的特定文件,因为这些目录中的数据是多种多样的。

所以我想知道是否有办法通过链接到原始目录来创建目录副本,但只保留新目录中的任何已更改文件。

2 个答案:

答案 0 :(得分:21)

事实证明这就是我想要的:

cp -al <origdir> <newdir>

它将复制整个目录并创建指向原始文件的硬链接。如果删除原始文件,则复制的文件仍然存在,反之亦然。这将完美地工作,但我发现newdir必须不存在。只要原始文件是只读的,您就可以创建原始目录的相同安全副本。

答案 1 :(得分:2)

但是,由于您正在寻找人们可以回写更改的方式,UnionFS可能就是您正在寻找的内容。它提供了将只读和读写位置组合成一个的方法。

  

Unionfs允许任意混合的只读和读写分支,以及在扇出的任何地方插入和删除分支。


最初我打算推荐这个(我经常使用它):

假设权限不是问题(例如,只需要阅读),我建议将它们绑定到位。

mount -B <original> <new-location>
# or
mount --bind <original> <new-location>

<new-location>必须作为文件夹存在。