我在终端中通过命令创建了一个硬链接文件:
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