ext3 / 4上的不可变硬链接?

在我对fs级别的文件版本,快照和相关的想法的研究中,我看了一下硬链接,看看它们是什么以及它们是如何performance的。 使用rsync,你可以得到一个非常漂亮的穷人的快照系统,并在本地不支持的文件系统上运行。

但是,你可以在ext3 / 4或其他文件系统上获得不可变的硬链接吗?

我对不变硬链接的定义是:一个硬链接,当在一个位置上改变时,变成一个普通的副本而不再是一个硬链接。

我想这样做是因为它可以使源数据的快照使用链接而不是数据副本(在使用rsync快照技术的情况下)。

我有几千兆字节的数据,由于空间限制而无法复制,但是如果我可以智能地快照单个更改的文件,而其余链接到源而不是副本,则我有足够的空间。

鉴于这一切,有没有其他的技术,function或技术,我真的在寻找?

有一个build议,添加一个新的系统调用, reflink() ,这将做你想要的。 到目前为止,还没有被接受。 然而, ocfs2 (自2.6.32以来)已经把它作为一个ioctl( [1] [2] )。

来自2009年5月的一些文章:

  • reflink()的双方
  • 本周的reflink()API

这个想法的一个较旧的变体被称为COW链接 。

在我看来,你正在寻找WAFL风格的快照。 它并不完全使用“不变的硬链接”语义,但非常接近它。

http://blog.interlinked.org/tutorials/rsync_time_machine.html http://rsnapshot.org/

两者都将使用ext3 / ext4。

他们不完全是快照,但是,将创build一个新的目录与硬链接到上一代。 删除前一代将使新目录保留正确的文件。