如何在 OSX 中创建有效的硬链接?

如何在 OSX 中创建有效的硬链接?

好吧,这让我很头疼。在 OS X 中,要创建硬链接,在终端窗口中,你应该只需输入以下内容即可...

ln a.txt b.txt

...这将创建一个从a.txt到 的硬链接b.txt。简单又直接。

当我执行该语句时,果然,在 Finder 中,b.txt出现在 旁边a.txt。但是,即使a.txt使用 TextEdit 编辑后,b.txt仍然有原始数据!换句话说,它看起来像是执行了复制,而不是链接,无论是硬链接还是其他链接。

对我来说毫无意义!有人能告诉我我做错了什么吗?

答案1

这种行为的原因相当简单,它与大多数 Mac OS X 应用程序中文件的保存方式有关:原子方式。

所发生的情况是,文件的副本被写入临时暂存区,然后移动以替换原始文件。

这很自然地会破坏硬链接。

答案2

如果出现,请参阅来自超级用户的此条目,这是 TextEdit 的一个功能。因此,创建硬链接的正常方法是正确的,但 TextEdit 的行为却破坏了这一点。(链接显示它创建一个新文件,然后在编辑后将其移到旧文件上。)

答案3

请注意,emacs 默认也会表现出这种(令人吃惊的!)行为(在所有 unix 中),尽管原因略有不同(在磁盘空间非常低的情况下,这是“安全”的做法)。但是,可以通过多种方式进行配置。

请参阅make-backup-files(使用C-h v make-backup-files)和

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch

相关内容