Dan Asked: 2010-03-15 09:18:43 +0800 CST2010-03-15 09:18:43 +0800 CST 2010-03-15 09:18:43 +0800 CST Linux:硬链接的最佳实践? 772 我过去使用过硬链接,但它们似乎把事情搞得一团糟...... 什么时候使用硬链接合适?何时何地使用硬链接的最佳实践是什么? 谢谢, 担 linux hardlink 7 个回答 Voted Best Answer ptman 2010-03-15T10:20:47+08:002010-03-15T10:20:47+08:00 当您想在同一个文件系统上的多个文件中拥有相同的内容(和相同的权限!)时,硬链接非常有用。 以包管理器为例,它为每个安装的包创建一个 /usr/share/doc/$packagename 目录,并在该目录中创建一个名为 LICENSE 的文件,其中包含包的许可证信息。典型 Linux 系统上的许多软件包都是 GPL 许可的,因此文件系统上可能只有一份 GPL 副本和 199 个链接,而不是 200 个 GPL 副本。 分布式版本控制系统在克隆上复制整个存储库,没有像 svn 中那样的签出。如果同一存储库的多个克隆位于同一文件系统上,则它们可以通过使用硬链接共享部分(不可变)文件(git 这样做,并且 darcs 也是 IIRC)。 许多备份解决方案也使用硬链接,例如 rsnapshot 和 backuppc。 3dinfluence 2010-03-15T10:20:36+08:002010-03-15T10:20:36+08:00 我见过的硬链接的最佳用途是使用 rsnapshot。 Chris Lercher 2010-03-15T09:24:19+08:002010-03-15T09:24:19+08:00 如果要实现,只有当所有硬链接都被删除时,文件才会被删除。 mpez0 2010-03-15T11:07:49+08:002010-03-15T11:07:49+08:00 在文件系统层次结构中设置带有循环链接的蜜罐,这样入侵者的“发现”就会永远运行。 ThorstenS 2010-03-15T22:41:35+08:002010-03-15T22:41:35+08:00 我的用户有一个文件夹 ~/remote_access,其中包含 windows winscp.exe等。此二进制文件是硬链接。 因此,如果有新版本出现,我只需将其复制到我家,所有用户都准备好将新版本复制到他们的 U 盘。这就像一个可怜的人自动软件升级;-) nickgrim 2012-05-08T12:09:44+08:002012-05-08T12:09:44+08:00 我有一个 Web 服务器,出于安全目的,用户只允许 FTP 访问(即不允许 SSH)和 chroot 到他们的主目录。我将包含他们的 Apache VirtualHost 定义的特定文件硬链接到他们的主目录中,以便他们可以读取它,即他们可以看到与他们相关的配置部分。这样我就不需要让他们访问/etc/apache(或文件系统的其他部分)。 rackandboneman 2012-05-08T12:26:44+08:002012-05-08T12:26:44+08:00 Linux vserver 也可以将其用作重复数据删除策略。与符号链接不同,您通常可以在 chroot 的边界上使用硬链接 - 但不要忘记任何设法更改文件内容的东西也会在 chroot 之外进行,在最坏的情况下会进入另一个 chroot。IIRC vserver 在其之上使用了 COW 机制......
当您想在同一个文件系统上的多个文件中拥有相同的内容(和相同的权限!)时,硬链接非常有用。
以包管理器为例,它为每个安装的包创建一个 /usr/share/doc/$packagename 目录,并在该目录中创建一个名为 LICENSE 的文件,其中包含包的许可证信息。典型 Linux 系统上的许多软件包都是 GPL 许可的,因此文件系统上可能只有一份 GPL 副本和 199 个链接,而不是 200 个 GPL 副本。
分布式版本控制系统在克隆上复制整个存储库,没有像 svn 中那样的签出。如果同一存储库的多个克隆位于同一文件系统上,则它们可以通过使用硬链接共享部分(不可变)文件(git 这样做,并且 darcs 也是 IIRC)。
许多备份解决方案也使用硬链接,例如 rsnapshot 和 backuppc。
我见过的硬链接的最佳用途是使用 rsnapshot。
如果要实现,只有当所有硬链接都被删除时,文件才会被删除。
在文件系统层次结构中设置带有循环链接的蜜罐,这样入侵者的“发现”就会永远运行。
我的用户有一个文件夹 ~/remote_access,其中包含 windows winscp.exe等。此二进制文件是硬链接。
因此,如果有新版本出现,我只需将其复制到我家,所有用户都准备好将新版本复制到他们的 U 盘。这就像一个可怜的人自动软件升级;-)
我有一个 Web 服务器,出于安全目的,用户只允许 FTP 访问(即不允许 SSH)和 chroot 到他们的主目录。我将包含他们的 Apache VirtualHost 定义的特定文件硬链接到他们的主目录中,以便他们可以读取它,即他们可以看到与他们相关的配置部分。这样我就不需要让他们访问
/etc/apache
(或文件系统的其他部分)。Linux vserver 也可以将其用作重复数据删除策略。与符号链接不同,您通常可以在 chroot 的边界上使用硬链接 - 但不要忘记任何设法更改文件内容的东西也会在 chroot 之外进行,在最坏的情况下会进入另一个 chroot。IIRC vserver 在其之上使用了 COW 机制......