Linux基础:Linux下硬连接与软链接有什么不一样

linux硬连接和软连接的区别node

1.原理上:linux

硬连接(hard link):A是B的硬连接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不一样的文件名,两个文件名指向同一个文件,A和B对文件系统来讲是彻底平等的。若是删除了其中一个,对另一个没有影响。每增长一个文件名,inode节点上的连接数增长一,每删除一个对应的文件名,inode节点上的连接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不一样的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点连接数减小为0的时候才会被系统回收。ide


软连接(soft link):A是B的软连接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不一样的inode,继而指向两块不一样的数据块。可是A的数据块中存放的只是B的路径名(能够根据这个找到B的目录项)。A和B之间是“主从”关系,若是B被删除了,A仍然存在(由于两个是不一样的文件),但指向的是一个无效的连接。字符串


2.使用限制上:it

硬连接:
a.不能对目录建立硬连接,缘由有几种,最重要的是:文件系统不能存在连接环(目录建立时的".."除外,这个系统能够识别出来),存在环的后果会致使例如文件遍历等操做的混乱(du,pwd等命令的运做原理就是基于文件硬连接,顺便一提,ls -l结果的第二列也是文件的硬连接数,即inode节点的连接数)class

b:不能对不一样的文件系统建立硬连接,即两个文件名要在相同的文件系统下。原理

c:不能对不存在的文件建立硬连接,由原理便可知缘由。遍历

软连接:
a.能够对目录建立软连接,遍历操做会忽略目录的软连接。数据

b:能够跨文件系统di

c:能够对不存在的文件建立软连接,由于放的只是一个字符串,至于这个字符串是否是对于一个实际的文件,就是另一回事了

3.命令

硬连接:ln 源文件 连接名

软连接:ln -s 源文件 连接名

相关文章
相关标签/搜索