linux软连接和硬链接(总结)
2024-08-26 21:34:06
参考博客:
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.节省空间解决空间不足问题,某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录
并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中。
硬链接:
硬链接的作用之一是允许一个文件拥有多个有效路径名,比如备份文件,快照。
最新文章
- Java魔法堂:枚举类型详解
- Typescript 其实就想排个序和枚举取数
- GoF23种设计模式
- Unquotted string '"2016-07-19"'
- [C++]C++标准里 string和wstring
- Storm入门教程 第五章 一致性事务【转】
- Connection 连接字符串释义
- 总结:如何获取同一个DIV里的多个不同子标签的值,并赋值给input?
- cookie、session、sessionid的区别
- maven插件本地化安装
- Android表格布局(Table Layout)
- jmeter 压测常见的几种报错
- Win10 - MySQL 10061 错误
- 01背包问题(动态规划)python实现
- 常见图片格式PNG,JPEG,BMP,GIF区别总结
- 关于分布式事务,XA协议的学习笔记
- LightGBM介绍及参数调优
- Mybatis 搭建遇到的坑
- Leaflet 测试加载高德地图
- linux基础01-bash特性
热门文章
- 在springboot中使用redis缓存,将缓存序列化为json格式的数据
- <;String>; 49 87
- ASP.NET开发实战——(五)ASP.NET MVC &; 分层
- [LeetCode] 659. Split Array into Consecutive Subsequences 将数组分割成连续子序列
- java while 循环
- GreenPlum 大数据平台--监控
- Windows10 64位部署odoo12开发环境
- 去掉DataGridView最后一行的空白行,删除空白行
- Windows安装Nginx需要注意的地方
- sql server取日期各个组成部分的datename()函数