删除两个文件之间的硬链接

删除两个文件之间的硬链接

我在终端中通过命令创建了一个硬链接文件: ln somefile somefile_h 并用它来玩。现在我面临一个问题,我该如何删除这两个文件之间的链接并单独使用它?有人知道吗?

答案1

要创建独立文件,请执行以下操作(假设somefile位于当前目录中):

cp somefile temp_somefile
rm somefile
mv temp_somefile somefile

这将创建一个相同的文件somefile,但不再链接到somefile_h。使用此方法无需了解链接文件在文件系统中的位置。

如果您知道链接文件的位置,则删除该链接文件然后使用相同文件名对(先前链接的)文件进行常规复制会更简单:

rm <path>/somefile_h
cp somefile <path>/somefile_h

cp用户 bac0n 提供了一种通过单个命令实现此目的的方法:

cp --remove-destination somefile <path>/somefile_h

此时,目标(链接)文件在复制之前被删除。因此,副本将成为“新的”常规文件,不再链接到源文件。

答案2

硬链接文件就像指向相同 inode 的名称。

要删除硬链接,只需

rm linked_name

这不会影响磁盘中的原始文件名和数据,有一个 inode 引用计数器,它会在链接时递增,在取消链接实例时递减。当计数器达到零时,inode 将被删除,空间将被标记为空闲。

要复制,请使用cp;要链接,请使用ln

相关内容