首页 > 其他分享 >操作系统-区分文件共享的两种方式:软链接和硬链接

操作系统-区分文件共享的两种方式:软链接和硬链接

时间:2023-04-12 23:35:26浏览次数:35  
标签:文件 操作系统 文件共享 节点 索引 link 链接 指针

软链接与硬链接是用来干什么的呢?
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

1.硬链接(基于索引节点的共享方式)

由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个硬链接,文件的链接数就加1。
image
image

硬链接存在的问题
当多个用户共享一个文件时,文件所有者删除了该文件,也就是删除了该文件的索引结点,那么其他用户指向该索引节点的指针就会悬空。

2.软链接(基于符号链实现的文件共享)

为了使用户b共享用户a的文件F,由操作系统创建一个LINK类型的新文件,也叫F,它被写入到用户b的目录中,以实现用户b的目录与文件F的链接。同名新文件只包含F的路径名。这样的链接方法叫符号链接(软链接)。
image

只有文件的所有者才拥有指向其索引节点的指针,而共享该文件的其他用户只有该文件的路径名,并不拥有指向其索引节点的指针。这样就避免了指针悬空的问题。

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

总结区别如下:

硬链接的查找速度比软链接快。

硬链接是多个指针指向一个 inode 节点,而软链接则是创建多个新的link文件,link里面存放目标文件路径。

硬链接会删除增加会改变被访问文件的链接计数,软链接不会。

硬链接无法跨分区、跨设备建立,软链接可以。

标签:文件,操作系统,文件共享,节点,索引,link,链接,指针
From: https://www.cnblogs.com/liyaaixuexi/p/17311872.html

相关文章

  • 88-云原生操作系统-Jenkins和LNMP架构业务容器化案例
    前提:基础镜像的构建请参考分层镜像构建并部署业务到Kubernetes集群生产案例基于StatefulSet实现MySql业务容器化案例Pod调度运⾏时,如果应⽤不需要任何稳定的标示、有序的部署、删除和扩展,则应该使⽤⼀组⽆状态副本的控制器StatefulSet来部署应⽤,例如Deployment或ReplicaSet更适......
  • 操作系统-文件存储空间(外存)管理
    存储空间的划分和初始化>一般一个文件存放在一个文件卷中。文件卷在提供服务之前,必须由对应的文件程序进行初始化,划分好目录区和文件区,建立空闲空间管理表格以及存放文件卷信息的超级块。1.空闲表法2.空闲链表法3.位示图法4.成组链接法这块天勤讲的好https://www.b......
  • 【408 操作系统】第一章 操作系统概述
    第一章操作系统概述重温408四件套的关系1.1.1操作系统的概念、功能......
  • Linux操作系统基础的常用命令
    1,Linux简介Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。1.1Linux介绍Linux出现于1991年,是由芬兰赫尔辛基大学学生LinusTorvalds和后来加入的众多爱好者......
  • Linux操作系统进程的状态和转换(五态模型)
    1、进程的状态和装换1.1进程的三态模型按进程在执行过程中的不同情况至少要定义三种状态:运行(running)态:进程占有处理器正在运行的状态。进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。就绪(ready)态:进程具......
  • 操作系统(2.8.1)--线程的实现方式
    1.内核支持线程(KST)内核支持线程,与进程相同,是在内核的支持下运行的,即无论是用户进程中的线程,还是系统进程中的线程,他们的创建、撤消和切换等也是依靠内核,在内核空间实现的。这种线程实现方式主要有如下四个优点:(1)在多处理器系统中,内核能够同时调度同一进程中多个线程并行执行(2)如......
  • Linux 操作系统启动过程
    当接通电源,硬件通过一系列自检完成后,硬件把控制权转交给操作系统后Linux系统启动过程可以分为5个阶段:加载内核。运行init。系统初始化。建立终端。用户登录系统。init程序的类型:SysV: init,CentOS5之前,配置文件:/etc/inittab。Upstart: init,CentOS6,配置文......
  • SQLServer 客户端链接服务器到Oracle数据库 全攻略
    引言和第三方公司进行接口对接时,发现某一个模块第三方只提供一个视图,还让我们直接调用他们数据库......
  • winform程序在不同操作系统下的兼容问题
    建议用.netframework3.5作为生成目标,CPU设置为any来开发,然后在app.config文件里加上<?xmlversion="1.0"encoding="utf-8"?><configuration><startupuseLegacyV2RuntimeActivationPolicy="true"><supportedRuntimeversi......
  • Python 链接数据库,快速操作数据库类。让你操作数据库so so 的
    importpymysqlclassDatabaseHandler:def__init__(self):self.db=pymysql.connect(host='127.0.0.1',user='root',db='test')#创建游标对象self.cursor=self.db.cursor()#def__del__(self):......