Answers:
硬链接可以帮助我们以更加灵活的方式组织文件系统。基本上,硬链接使我们可以获取一个文件,并一次将其放置在文件系统中的多个位置。考虑一下您是摄影师并且有很多照片的情况(这是我一生的例子!)。您可能会按照出现在其中的人来组织它们,因为有时人们会要求您提供它们的照片。但是您可能还想按位置和日期来组织它们。没有嵌套这三件事的真正方法,它们是完全独立的组织机构。因此,您可以为这三种不同的事物创建三个不同的层次结构,并将每张照片都呈现在这三个之中,而无需每张照片必须存储三遍。这就是硬链接的魔力。取消符号链接的链接,我们不必担心“真实文件”在哪里,因为它们都是真实文件。我们可以随意删除和移动,因为文件将一直保留到不再有对其的引用为止,并且在删除最后一个硬链接时将其删除。它很简单,不需要您经常跟踪。
gzip
,gunzip
和zcat
。
直到所有硬链接(是的,所有文件名都是硬链接,甚至是第一个硬链接)都被删除并且文件关闭后,才会清除文件的内容。这样,当在多个位置需要一个文件但在任何时候都可以将它们从任何位置删除时,例如在~/Downloads/coolsong.mp3
和之间,它可能会很有用~/Music/Cool Song.mp3
。
此处给出的许多示例都是有效的,但与软链接(例如“在多个位置需要一个文件”问题)同样可以很好地工作。
备份软件Dirvish可以很好地说明硬链接的实际帮助:
Dirvish是一种快速的,基于磁盘的旋转网络备份系统。
借助Dirvish,您可以维护一组完整的文件系统映像,并且无人参与的创建和到期。分散的备份保险库就像是一台用于数据的时间机器。
Dirvish通过将文件复制到单独的(备份)文件系统(例如USB硬盘)来在文件系统级别创建备份(即,它复制文件,不创建映像)。每次进行备份时,Dirvish都会创建要保存的目录树的单独完整副本。
诀窍是,如果Dirvish检测到您要保存的树已经存在较旧的备份副本,则它将通过在新树中创建到旧树中文件的硬链接来自动重用未更改的文件。
这样,每个备份副本都是目录树的完整,独立的副本,但是同时,只有更改过的文件实际上会占用文件系统中的空间。换句话说,您可以同时享受增量备份(节省空间)和完整备份(轻松检索)的好处。
这仅是可能的,因为硬链接对用户空间工具是完全透明的。
这可能也适用于符号链接(尽管在备份使用符号链接本身的数据时会遇到问题),但是硬链接唯一可能的优点是:
如果要丢弃旧的备份,只需删除相应的备份目录树即可。仅从该树链接的文件会被文件系统自动删除(因为它们的最后一个硬链接已删除),但是也出现在其他副本中的文件仍保留在磁盘上。
我使用“硬链接”来备份一些“ HowTos”和代码段
我的用户/根目录中有一个名为“共享文档”的目录。在该目录中,我有“硬链接”指向我的技巧,窍门,代码片段,howto,这些都存在于相应的目录中。php,mysql,css,regex,公式,linux等,将它们放在“一个地方”可以轻松使用,更新它们,而不必在我的Documents /目录中四处寻找经常使用的这些文件。
很久以前,我使用了符号链接。我会如实地将这个通用的“共享文档”目录备份到我的服务器上。问题是符号链接或“软链接”,如果被复制(cp -auv)或tar和被复制掉,则仅备份或复制“链接”而不是文档内容。因此,我必须遍历目录并从其实际位置复制2打文件中的每一个。
使用HARD LINKS,我可以复制,tar,rsync'Shared Docs'目录,然后放心地备份那些分散的文档,实际上是在备份内容。当我意识到我一直在备份0 bit'link files'而不是信息时,这真的让我很吃力。
使用“硬链接”的缺点是,在目录上执行ls并不能指示您文件已与另一个文件“链接”或该文件可能共存。有很多方法可以找到它们,但我说的不是简单的ls -l->指向...。因此,我通常在文档的开头添加一个注释,指明该文件的目录/文件与“共享”
兰迪斯。