操作系统-区分文件共享的两种方式:软链接和硬链接
软链接与硬链接是用来干什么的呢?
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。
1.硬链接(基于索引节点的共享方式)
由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个硬链接,文件的链接数就加1。
硬链接存在的问题
当多个用户共享一个文件时,文件所有者删除了该文件,也就是删除了该文件的索引结点,那么其他用户指向该索引节点的指针就会悬空。
2.软链接(基于符号链实现的文件共享)
为了使用户b共享用户a的文件F,由操作系统创建一个LINK类型的新文件,也叫F,它被写入到用户b的目录中,以实现用户b的目录与文件F的链接。同名新文件只包含F的路径名。这样的链接方法叫符号链接(软链接)。
只有文件的所有者才拥有指向其索引节点的指针,而共享该文件的其他用户只有该文件的路径名,并不拥有指向其索引节点的指针。这样就避免了指针悬空的问题。
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
总结区别如下:
硬链接的查找速度比软链接快。
硬链接是多个指针指向一个 inode 节点,而软链接则是创建多个新的link文件,link里面存放目标文件路径。
硬链接会删除增加会改变被访问文件的链接计数,软链接不会。
硬链接无法跨分区、跨设备建立,软链接可以。