当前位置: 首页 > news >正文

Linux ---- 硬链接和软链接

1. Linux链接档种类 

    Linux 下的链接档有两个种类。一种类似于 win 电脑的快捷方式,称为软链接,软链接也可以叫做符号链接。另一种是通过文件系统的 inode 链接来产生的,类似于 win 电脑的复制,但是不产生新的文件,称为硬链接。硬链接也可以称作为实体链接。
2. 硬链接
2.1 inode介绍inode 也叫做索引节点,内核会给每一个新创建的文件分配一个索引节点,这个索引节点就是 inode。 inode 用来存放文件信息,每个文件都会占用一个 inode,并且这个 inode 号是唯一的,可以把 inode 简单的理解为一个指针,它永远指向本文本的具体存储位置,文件的属性保存在 inode 里,系统是通过 inode 而不是文件名来定义每一个文件的。当系统要访问文件时, inode 就会被复制到内存,从而实现文件的快速访问。 
使用 “ls -i”命令可以看到 inode 号。如下图所示:
2.2 硬链接介绍硬链接是一个新的链接到某个 inode 号码的记录。这个链接指向 inode ,系统并不给他重新分配 inode 。也就是说会有多个文件对应同一个 inode ,如果两个文件的 inode 一样, 那么这两个文件就是完全一样的。可以用 ln 命令来建立硬链接。 
格式: ln [源文件] [目标文件] 
常用参数 -f ,就是说强制创建,无论目标文件是否存在都要创建链接。 
举例:使用命令 touch test1.txt 创建文件 test1.txt,然后使用命令ln test1.txt test11.txt为 test1.txt 创建一个名为 test11.txt 的硬链接,然后使用“ls -i”命令查看inode信息如下图所示:可以发现 test1.txt 和 test11.txt 他们的 inode 号码都是 29898401 。因为 inode 号一样,所以这两个文件的权限和属性也是一摸一样的,也就是 test1.txt 和 test11.txt 是两个完全一样的文件。 如下图所示:观察test1.txt以及test11.txt两行,上图中的数字 2,这个代表的是有 2 个档名链接到了这个 inode 号。
2.3 硬链接特点
硬链接文件具有以下特点:① 具有相同inode的多个文件互为硬链接文件,创建一个硬链接文件相当于给文件起一个别名。② 对于硬链接文件,只有删除了源文件以及对应的所有硬链接文件,文件本身才会被删除。③ 根据硬链接文件的特点,我们可以通过给文件创建硬链接的方式来防止文件误删除。④ 对于硬链接,不论修改源文件还是链接文件,另一个文件的数据都会被改变。⑤ 硬链接不能跨文件系统。⑥ 硬链接不能链接到目录。2.4 硬链接的优缺点
2.4.1 优点第一方便,虽然类似于 win 的复制,但通常不占用实际空间。而且不管是修改源文件或者是修改对应的硬链接文件,只要修改一个,文件就会被同时修改。第二是安全,防止误删除。即使删除了源文件和对应的硬链接文件中的任意一个,还可以通过其他链接来访问文件,可以利用硬链接这个特点来做文件的备份。
2.4.2 缺点第一,只能在同一个文件系统才可以创建硬链接。原因是不同的文件系统管理方式不同, 甚至有的文件系统没有索引号,它不是索引文件系统。哪怕他有索引号,两个文件系统的索引号含义不一定是相同的,即使它的索引号相同,但是不同的文件系统中也有可能使用该 inode 的其他文件,这样就会发生冲突,所以说只能在同一个文件系统中才能创建硬链接。 
  第二,目录之间不能创建硬链接(太复杂,现在还不支持)。如果说将根目录下的 etc 用硬链接创建一个硬链接的目录,那么不只是我们的文件要被创建,这个文件下面所有的文件名都要创建一个硬链接,这样呢就会给工作环境造成一个很大的工作量,而且非常的复杂,所以现在还不支持。3. 软链接软链接类似于 win 上的快捷方式。可以用 ln 命令来建立软链接。 
格式: ln [-s] [源文件] [目标文件] 
注意:必须加上-s 参数,使用 ln 如果不加任何参数的话,那么就是 Hard Link ,而且源文件要用绝对路径,不能使用相对路径。
当前目录下【/home/topeet/Desktop/】的内容如下图所示。
使用命令ln -s /home/topeet/Desktop/test1.txt test4.txt 为 test1.txt 创建一个软链接,如下图所示: 上图中可以发现 test1.txt 和 test4.txt 的 inode 号是不一样的,所以这两个文件是完全独立的。
软链接就是创立了一个新的文件,当访问这个链接文件的时候,系统就会发现他是一个链接文件,然后读取链接文件找到真正要访问的文件。 类似于 win 上的快捷方式,如果删掉源文件 test1.txt ,那么 test4.txt 就不能打开了,如下图所示(红色背景代表无效):软链接虽然没有硬链接安全,但是限制少,所以使用范围广泛。
4. 总结
硬链接和软连接总结:硬链接相当于给文件另外起一个别名,两个名字本质上还是同一个文件主体。软链接相当于给文件创建一个快捷方式。而快捷方式和源文件本质上是两个文件。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 了解蜜罐网络技术:网络安全中的诱捕与防御
  • 手撕⼆叉树——堆
  • C语言实现Reactor
  • Flask条件查询接口出现SQL注入,使用参数化查询:写法的解决方案(附带企业级开发实际例子与经验分享)
  • java基础 之 常用遍历方法
  • Spring DI 数据类型—— set 方法注入
  • 达梦数据库的系统视图v$db_cache
  • Elasticsearch DSL 语法详解
  • 【Qt】输入类控件QLineEdit
  • 电连接器的质量等级选择
  • 通用人工智能不应该完全以人类为标准
  • Adobe After Effects的插件--------CC Cylinder
  • ESP32 分区表介绍
  • 通配符证书:轻松管理您的子域名安全
  • Java中实现一个定时任务并在特定时刻弹出窗口提醒用户需要放松休息
  • CentOS7简单部署NFS
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • EventListener原理
  • Intervention/image 图片处理扩展包的安装和使用
  • Java 网络编程(2):UDP 的使用
  • Java小白进阶笔记(3)-初级面向对象
  • Logstash 参考指南(目录)
  • overflow: hidden IE7无效
  • PHP面试之三:MySQL数据库
  • Python 反序列化安全问题(二)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • python大佬养成计划----difflib模块
  • Redux 中间件分析
  • Sass 快速入门教程
  • Vue 动态创建 component
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 来,膜拜下android roadmap,强大的执行力
  • 浏览器缓存机制分析
  • 如何解决微信端直接跳WAP端
  • 小程序button引导用户授权
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • $(selector).each()和$.each()的区别
  • %@ page import=%的用法
  • (3)STL算法之搜索
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (zhuan) 一些RL的文献(及笔记)
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)js前端开发中设计模式之工厂方法模式
  • (转)c++ std::pair 与 std::make
  • .bat批处理(六):替换字符串中匹配的子串
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 事件模型教程(二)
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比