Linux中的硬链接和软链接的概念、区别及用法
概念:
硬链接(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仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
主要区别、限制:
硬链接:
a.不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数)
b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下。
c:不能对不存在的文件创建硬链接,由原理即可知原因。
软链接:
a.可以对目录创建软链接,遍历操作会忽略目录的软链接。
b:可以跨文件系统
c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了
ln 语法格式
硬链接:ln 源文件 链接名
软链接:ln -s 源文件 链接名
注意: 链接的源文件路径要写绝对路径)
否则会报错(no such file or diretory)
示例:
如果觉得不错的话可以点赞关注哦! 谢谢
最新文章
- 【Java学习系列】第3课--Java 高级教程
- unity渲染层级关系小结(转存)
- jsp_Scriptlet
- python 线性回归示例
- LeetCode Ugly Number (简单题)
- 类成员函数指针 ->;*语法剖析
- 解决Intellij IDEA 通过archetype创建Maven项目缓慢的问题
- 对现有Hive的大表进行动态分区
- [转贴]怎样在LINQ实现 LEFT JOIN 或者RIGHT JOIN
- android-配置虚拟机Virtual device
- jq實現網頁個性title
- CEBX格式的文档如何转换为PDF格式文档、DOCX文档?
- 1003 Emergency Dijkstra
- 【原创】岁月如歌 一款网易歌单生成pdf的软件
- henrylee2cn简单的rpc服务
- TrID文件类型识别linux版
- C# CSGL
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局
- 关于redux
- NSArray的排序方法
热门文章
- CSS学习笔记_1
- rdd里的foreach无法对外界产生影响
- Ride to Office
- maven配置本地和远程仓库
- linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux
- rabbit mq 手动重试机制
- python执行cmd命令
- AJAX 实现form表单提交
- Please make sure you have the correct access rights and the repository exists.
- luogu5823 课表的排列