硬链接文件不一样

我创build了一个文件的硬链接,如下所示:

ln /path/to/source/file1 /path/to/target/file2 

使用md5sum,这两个文件是相同的。 过了一段时间,源文件已被另一个程序修改。 目标文件没有得到“更新”。 md5sums现在是不同的。 当然,这些文件是在同一个分区,否则我不能创build一个链接。

我想要做的是获得源文件的副本到目标文件夹(这是版本化),以便我有权访问其他地方的源文件。

我尝试将源文件移动到具有不同名称的目标文件夹,然后在源文件中创build一个符号链接,但是期望该文件的程序(以某种方式)在目标文件夹中创build了所需的文件名。

想法?

我猜测的是版本控制系统(哪一个?)移动/删除硬链接文件,并创build一个不再与原始文件硬链接的新副本。

链接计数( ls -l输出中的第一个数字列)指示原始文件是什么? 如果是1,则链接丢失。 如果它是2,你必须find真正的第二个副本,也许用find命令。 为此,请input以下命令:

 find /commonparent_dir -samefile /path/to/original_file 

这将search具有与公共父目录(即装入点)相同的inode的文件,与file /path/to/original_file相同。

我可以在testing用例中复制这个场景,所以我想这就是发生了什么。 如果源文件被删除,则硬链接丢失。 即使用同样的名字创build一个新文件,硬链接当然也不会被恢复。 这是我所想要发生的。 更新源文件的程序必须删除文件并重新创build。