Linux:硬链接的最佳实践?

过去我使用过硬链接,但是他们似乎弄得一团糟

什么时候使用硬链接是正确的? 何时何地使用硬连接的最佳实践是什么?

谢谢,

当你想在同一个文件系统上的几个文件中拥有相同的内容(和相同的权限!)时,硬链接可能非常有用。

以一个软件包pipe理器为例,它为每个已安装的软件包创build一个/ usr / share / doc / $ packagename目录,并在该目录内创build一个名为LICENSE的文件,其中包含许可证信息。 在一个典型的Linux系统上的许多软件包都是GPL许可的,所以文件系统上的GPL不要有200个副本,而只能有一个副本和199个链接。

分布式版本控制系统将整个存储库复制到克隆上,像svn中没有签出。 如果同一个存储库中的几个克隆在同一个文件系统上,那么他们可以通过使用硬链接来共享(不可变的)文件的一部分(git做到这一点,而darcs也是IIRC)。

许多备份解决scheme也使用硬链接,如rsnapshot和backuppc。

我见过的硬链接最好用的是rsnapshot。

如果你想实现,只有当所有的硬链接被删除时,该文件才被删除。

在文件系统层次结构中设置具有循环链接的蜜jar,因此入侵者的“查找”将永远运行。

我的用户有一个〜/ remote_access文件夹,其中包括windows winscp.exe 。 这个二进制是一个硬链接。

所以,如果有新版本,我只是复制到我家,所有的用户有新版本准备复制到他们的USB棒。 这就像一个穷人自动软件升级;-)

我有一个Web服务器,用户只允许FTP访问(即不是SSH)和chroot到他们的主目录出于安全的目的。 我将包含Apache VirtualHost定义的特定文件硬链接到他们的主目录,以便他们可以读取它,即他们可以看到与它们相关的configuration部分。 这样我就不需要给他们访问/etc/apache (或者文件系统的其他部分)的权限。

Linux虚拟服务器也可以将其用作重复数据删除策略。 通常,你可以在一个chroot的边界使用一个硬链接,而不是一个符号链接 – 但是不要忘记,pipe理文件内容的改变也会在chroot之外进行,最坏的情况是改为另一个chroot。 IIRC虚拟服务器在其上使用COW机制…