Linux中硬链接文件和软链接文件有什么区别?

2024-11-19 08:54:31
推荐回答(3个)
回答1:

linux系统中链接文件分为硬链接和软链接(软链接也叫符号链接)。硬链接和软链接都是指向文件的一种方式,但两者有不同的地方,主要有以下不同:
1.硬链接是创建一个指向block的inode,有防止误删除的功能。因为删除一个文件,实际上是删除inode信息,切断了inode与block之间的联系。当给一个文件做了硬链接之后,删除文件时,只会减少文件的链接数,当链接数为0时,才会彻底删除该文件。
软链接类似windows系统的快捷方式,是一个完整的文件,有自己的inode和block,block的内容就是原文件的文件名。当原文件删除后,软链接就失效了,没有防止误删除的功能。
2.文件的大小不一样。由于硬链接是指向原文件的block,所以硬链接的文件大小和原文件大小是一致的。而软链接是新的文件,block里是原文件的的文件名,所以软链接文件的大小一般是4k,即一个block的大小。
3.硬链接不能给目录做,不能跨分区做。软链接则都可以。
创建硬链接命令:
ln
file
filenew
#file为原文件名,filenew为新文件名。
创建软链接命令:
ln
-s
file
filenew
#file为原文件名,filenew为新文件名。

回答2:

硬连接不能跨分区,而软连接可以!
硬连接总是指向一个I节点,而软连接是创建一个新的I节点。这就是它为什么可以跨分区的原因!
软连接可以对一个不存在的文件链接,而硬连接不能,因为他要指向源文件的I节点,所以源文件必须存在!硬连接不能对目录链接,I节点的原因是其中之一,第二个原因是目录的特殊性!
具体做法看楼上--妙雨飞仙--的!
但楼上有一错误,硬连接不是复制文件,而是复制文件头的数据到新文件,数据区共享!这样就可以省去数据空间。而复制硬连接的时候,会按照普通文件的操作方式进行!

回答3:

硬链接不占用磁盘空间
硬链接只能作用于文件,不可跨越分区。