linux软连接和硬链接(总结)
参考博客:
https://www.cnblogs.com/fengdejiyixx/p/10821820.html
https://www.runoob.com/linux/linux-comm-ln.html
https://www.cnblogs.com/crazylqy/p/5821105.html
需知:
当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个 文件的 inode。 Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber, 其他信息还有创建时间、修改时间 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息。
硬链接(hard link):
A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
软链接(soft link):
A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
创建方式:
1.软链接(符号链接) ln -s 目标文件 链接名
2.硬链接 (实体链接)ln 目标文件 链接名
主要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
区别:
软链接:
1.软链接,以路径的形式存在,类似于Windows操作系统中的快捷方式
2.软链接可以跨文件系统
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
5.软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件
6.当源文件目录改变后,软连接访问不到
硬链接:
1.硬链接,以文件副本的形式存在,但不占用实际空间
2.不允许给目录创建硬链接(可以通过参数添加但仅限root用户)
3.硬链接只有在同一个文件系统中才能创建
4.不能对不存在的文件创建硬链接
5.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件
6.当源文件目录改变后,硬连接可以访问
使用场景:
软连接:
1.便于文件的管理,比如把一个复杂路径下的文件链接到一个简单路径下方便用户访问。
2.节省空间解决空间不足问题,某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录
并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中。
硬链接:
硬链接的作用之一是允许一个文件拥有多个有效路径名,比如备份文件,快照。