2

我在文件夹中有一个文件,但我对这个文件一无所知(它是如何生成和更新的),因为它来自我系统上运行的应用程序,而我没有源代码。

文件格式很清楚json,我成功地创建了一个硬链接(使用 shell 命令ln file hardLinkToFile)并将其放在另一个目录中。
此时,我检查了“2”文件,它们与预期的完全相同,但是当我在应用程序中执行导致原始文件更新的操作时,硬链接没有得到更新。

关于如何解决这个问题的任何想法?

更新:正如Vlad Lazarenkomvds都指出的那样,该文件可能会被删除并创建一个新文件,我可以做些什么来获得与我最初想到的硬链接等效的解决方案吗?

4

4 回答 4

3

如果硬链接没有得到更新,则意味着应用程序正在删除旧文件并创建一个新文件。因此,您仍然拥有前一个文件的硬拷贝,但新文件具有完全不同的 inode,尽管路径仍然相同。您可以简单地通过自己更改该文件的内容来验证它 - 链接应该会更新。

于 2012-02-15T17:57:07.137 回答
1

@Vlad 和弗朗切斯科。真的是这样。我验证了 vi 保持 inode 不变,并且 src 和 dest 文件都更改了,而例如 kate 编辑器没有,我很生气地理解为什么我在 src 文件中所做的更改不在 dest 文件中. ls -li srcfile destfile在使用我提到的每个编辑器编辑其中一个之前,您可以使用命令轻松检查这一点。顺便说一句,硬链接依赖于应用程序并不好

于 2014-03-13T15:39:46.847 回答
1

我在 TextEdit 中得到了相同的行为,但在 TextMate 中没有。我怀疑这是由于 OS X Lions 文档架构中内置的修订控制。TextEdit 使用版本控制,而 TextMate 没有。如@Vlad Lazarenko 所述,此函数很可能会替换文件而不是更改文件。

于 2012-02-15T18:01:28.600 回答
0

我想这有点太晚了......无论如何,我偶然发现,如果您更改文件的默认应用程序,硬链接会与原始文件分离。即使您单击全部更改并且与该特定文件无关。

于 2013-02-07T05:10:57.260 回答