软硬连接的区别和inode

一:Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

【硬连接】
     硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
      另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

2.通过实验加深理解
      [[email protected]]$ touch f1          #创建一个测试文件f1
      [[email protected]]$ ln f1 f2          #创建f1的一个硬连接文件f2
      [[email protected]]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
      [[email protected]]$ ls -li            # -i参数显示文件的inode节点信息total 0     
      9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
      9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
      9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。

[[email protected]]$ echo "I am f1 file" >>f1
      [[email protected]]$ cat f1
      I am f1 file
      [[email protected]]$ cat f2
      I am f1 file
      [[email protected]]$ cat f3
      I am f1 file
      [[email protected]]$ rm -f f1
      [[email protected]]$ cat f2
      I am f1 file
      [[email protected]]$ cat f3
      cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效

3.总结
      依此您可以做一些相关的测试,可以得到以下全部结论:
      1.删除符号连接f3,对f1,f2无影响;
      2.删除硬连接f2,对f1,f3也无影响;
      3.删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
      4.同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

二:关于inode:

inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。虽然不太恰当,但还是比较形象。

当我们用ls 查看某个目录或文件时,如果加上-i 参数,就可以看到inode节点了;比如我们前面所说的例子;

[[email protected] ~]# ls -li lsfile.sh

2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

lsfile.sh 的inode值是 2408949 ; 查看一个文件或目录的inode,要通过ls 命令的的 -i参数。

2.10 inode 相同的文件是硬链接文件;

在Linux 文件系统中,inode值相同的文件是硬链接文件,也就是说,不同的文件名,inode可能是相同的,一个inode值可以对应多个文件。理解链接文件并不难,看看例子就会了。在Linux中,链接文件是通过ln工具来创建的。

三:node的特殊作用:

  由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。

  1.有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。

  2.移动文件或重命名文件,只是改变文件名,不影响inode号码。

  3.打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

  第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

时间: 2024-10-21 13:21:40

软硬连接的区别和inode的相关文章

Linux课堂作业2(inode工作原理以及软硬连接的区别)

inode工作原理: 一个文件包括元数据和数据内容,元数据存放在inode table中,而数据内容存放在block块中,inode存放着各个文件的元数据条目,其内容包括,一些基本的元数据比如mode,ownership,sizetimestamp,还存放着指向数据的指针,这些指针分为直接指针和间接指针,双重间接指针甚至三种间接指针.直接指针代表直接指向数据内容的block块,间接指针下一层指向虽然是一个数据块,但是数据块内却不是文件的数据内容,而是一个指针数据块,如果块大小为4k,每个指针占4

文件系统;inode;软硬连接;文件通配符;文件管理命令:mkdir 、cp、rm、mv、touch

1.文件系统.索引节点inode.软硬连接 1.linux文件系统 Linux系统中除进程之外的一切皆是文件,为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念.目录使文件可被分类管理,且目录的引用使 Linux 的文件系统形成一个层级结构的目录树.下图所示的是普通 Linux 系统的顶层目录结构,其中 /dev 是存放了设备相关文件的目录. [root@CentOS7 data]#tree -L 1 / / 根目录 ├── bin -> usr/bin 存放用户二进制文

详解「复制、拷贝、替身、软连接、硬连接」区别

在mac文件系统中可以对一个文件进行标题中的这5种操作,操作的结果都是生成一份副本,但是其中却有很大区别. 首先操作上的区别很明显 生成 软连接.硬连接 是通过命令行操作的 生成 替身.复制.拷贝 一般是通过finder进行操作的,右键某个文件,菜单中选择(其实复制也可以用命令cp来实现,跟finder操作是一个效果) 然后其中的 复制和拷贝 跟另外三种方式本质上不同,它们之间的区别也很好理解 他们的共同点是生成一份文件的副本,副本和原文件是两个独立的文件,两者的关系只有在生成时是关联的,在生成

linux下的连接文件——软连接和硬连接的区别

软连接可以理解为,源文件的快捷方式,软连接文件记录的是源文件的路径,占用空间非常小.当把源文件删除后,那么软连接文件也就变成一个坏文件了,不能使用了. 硬连接和源文件的inode信息是一模一样的,可以说硬链接文件只是复制了一份源文件的inode信息,在我们看来硬链接文件和源文件没有什么区别,删除任何一个文件对方都不受影响,唯一的是少了一份inode,硬链接只能在同一个分区下创建,而软连接不受限制.硬链接文件和源文件虽然看起来像是两个文件,但是只占用一个文件的磁盘空间. 软连接  ln -s  

软硬连接的最经典演绎

链接文件:ln 软链接:ln –s 旧文件 新文件(相对于 windows 下的快捷方式,每个文件一个 inode) 硬链接:ln 旧文件 新文件(两个文件一个 inode) 1,软硬链接关于文件的情况 [[email protected] wl]# ls a [[email protected] wl]# ln -s a aa           ---------------------->  创建软链接 [[email protected] wl]# ls a aa    [[email 

软硬连接ln

软硬连接Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点来进行连接.在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index).在Linux中,多个文件名指向同一索引节点是存在的.一般这种连接就是硬连接.硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以

TCP/IP系列——长连接与短连接的区别

1 什么是长连接和短连接 三次握手和四次挥手 TCP区别于UDP最重要的特点是TCP必须建立在可靠的连接之上,连接的建立和释放就是握手和挥手的过程. 三次握手为连接的建立过程,握手失败则连接建立失败. 四次挥手为连接的完整释放过程,也会发生某个消息丢失或者超时的情况,有一方主动发送FIN消息即表示连接即将释放. 注:SYN.ACK.FIN消息具有哪些含义,以及连接的状态,请参考<TCP/IP详解 卷1>第18章. 长连接 长连接,也叫持久连接,在TCP层握手成功后,不立即断开连接,并在此连接的

VMware中三种网络连接的区别

VMware中三种网络连接的区别 1.概述 2.bridged(桥接模式) 3.NAT(网络地址转换模式) 4.host-only(主机模式) 5.replicate physical network connection state 选项解释 1.概述 大家在安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,如下图.其中VMnet1是host网卡,用于host方式连接网络的.VMnet8是NAT网卡,用于NAT方式连接网络的.它们的IP地址是随机生成的. VMware提供了三

UrlConnection连接和Socket连接的区别

关于UrlConnection连接和Socket连接的区别,只知道其中的原理如下:抽象一点的说,Socket只是一个供上层调用的抽象接口,隐躲了传输层协议的细节.urlconnection 基于Http协议,Http协议是应用层协议,对传输层Tcp协议进行了封装,是无状态协议,不需要你往考虑线程.同步.状态治理等,内部是通过socket进行连接和收发数据的,不过一般在数据传输完成之后需要封闭socket连接.直接使用Socket进行网络通讯得考虑线程治理.客户状态监控等,但是不用发送头信息等,更