1.Linux链接概念

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

1.1索引节点

索引节点是指在很多类Unix文件系统中的一种数据结构。每一个索引节点保存了文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名称。

inode包括文件的元信息,详细来说有下面内容:

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、运行权限

  * 文件的时间戳。共同拥有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名称指向这个inode

  * 文件数据block的位置

  

能够用stat命令。查看某个文件的inode信息:

stat example.txt

**注意:**Unix/Linux系统内部不使用文件名称,而使用inode号码来识别文件。对于系统来说,文件名称仅仅是inode号码便于识别的别称或者外号。表面上,用户通过文件名称,打开文件。

实际上,系统内部这个过程分成三步:首先,系统找到这个文件名称相应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

1.2硬连接

普通情况下。文件名称和inode号码是”一一相应”关系,每一个inode号码相应一个文件名称。可是,Unix/Linux系统同意,多个文件名称指向同一个inode号码。这意味着,能够用不同的文件名称訪问相同的内容;对文件内容进行改动。会影响到全部文件名称;可是,删除一个文件名称。不影响还有一个文件名称的訪问。这样的情况就被称为”硬链接”(hard link)。

硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。在Linux中,多个文件名称指向同一索引节点是存在的。一般这样的连接就是硬连接。硬连接的作用是同意一个文件拥有多个有效路径名,这样用户就能够建立硬连接到关键文件。以防止“误删”的功能。其原因如上所述。由于相应该文件夹的索引节点有一个以上的连接。仅仅删除一个连接并不影响索引节点本身和其他的连接。仅仅有当最后一个连接被删除后。文件的数据块及文件夹的连接才会被释放。也就是说,文件真正删除的条件是与之相关的全部硬连接文件均被删除。

1.3软链接

第二种连接称之为符号连接(Symbolic Link),也叫软连接。

软链接文件有相似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中。文件实际上是一个文本文件,当中包括的有还有一文件的位置信息。

1.4硬链接与拷贝的差别

硬链接仅仅是通过文件的别名指向了文件的inode(索引节点)。inode是操作系统指定文件的根据。每一个文件有且仅仅有一个inode。所以操作硬链接就是操作源文件。而复制则能够看成新建一个文件并拷贝原文件的内容。

2.通过实验加深理解

[oracle@Linux]$ touch f1 #创建一个測试文件f1

[oracle@Linux]$ ln f1 f2 #创建f1的一个硬连接文件f2

[oracle@Linux]$ ln -s f1 f3 #创建f1的一个符号连接文件f3

[oracle@Linux]$ 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节点不同。

[oracle@Linux]$ echo “I am f1 file” >>f1

[oracle@Linux]$ cat f1

I am f1 file

[oracle@Linux]$ cat f2

I am f1 file

[oracle@Linux]$ cat f3

I am f1 file

[oracle@Linux]$ rm -f f1

[oracle@Linux]$ cat f2

I am f1 file

[oracle@Linux]$ 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,整个文件会真正的被删除。

(5)硬链接是文件的不同名称,软连接是文件名称的超链接。文件名称不存在。超链接就失效了。

參考文献

[1]http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html

[2]http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html

[3]

url=U9a3ioCFwNCSsubL1Fg9FKDHgs6q5GE8qnFY_HdYh-9elU4Cwl0PQV4_zSnVYQqluKjLJ2Y8ZEtUss-r2jZzla">http://zhidao.baidu.com/link?

url=U9a3ioCFwNCSsubL1Fg9FKDHgs6q5GE8qnFY_HdYh-9elU4Cwl0PQV4_zSnVYQqluKjLJ2Y8ZEtUss-r2jZzla

[4]索引节点.百度百科

Linux文件的软链接和硬链接的更多相关文章

  1. 深入解读键值产生原理,linux中的软链接和硬链接(转)

    键值 = 文件标示符 + 项目ID 当用到进程间的通信时, 必须要注意到的是键值是怎么产生的,我们知道任何一个文件时通过文件名来访问的, 而内核在对应的给其一个值,也就是文件标示符. 系统建立IPC通 ...

  2. Linux中的链接文件_软链接和硬链接

    一.链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link).两种链接的本质区别在于inode.以下是详细介绍: 硬链接:当系统要读取一个 ...

  3. 2017-7-18-每日博客-关于Linux下的软链接和硬链接.doc

    ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链 ...

  4. Linux学习笔记 软链接和硬链接

    Linux 中,"everything is file".接下来给大家介绍 linux 如何通过链接,达到节省磁盘空间.共享文件等目的.链接文件有两种方式,软链接(soft lin ...

  5. Linux常用基本命令(软链接与硬链接 )

    硬链接:相当于文件的多个入口,作用:备份文件,创建快照等 软链接:相当于windows的快捷方式 命令格式: ln option 源文件 目标文件 -s: 创建软链接 1,创建硬链接: ghostwu ...

  6. Linux中的软链接与硬链接

    软链接相当于windows的快捷方式,当源文件不存在时,软链接失效. 链接是指向文件名,当指向的文件名字删除的时候,就找不到源文件了.硬链接是指向文件本身,删除一个文件名字,还是可以找到源文件的.ls ...

  7. linux下的软链接与硬链接

    在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);这种链接称为软链接. 另一种则是透过文件系统的 inode 连结来产生新档 ...

  8. linux 创建软链接和硬链接

    Linux 系统中有软链接和硬链接两种特殊的“文件”. 软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录. 硬链接则透过文件系统的inode来产生新档名,而不是产生新档案. ...

  9. Linux 中软链接和硬链接的使用

    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link). 硬链接和软链接 硬链接 --- ln 要链接的文件 新硬链接名 软连接 --- l ...

随机推荐

  1. mysql查询当前系统时间

    第一种方法:select current_date: MySQL> select current_date as Systemtime;+------------+| Systemtime |+ ...

  2. vue elementui switch开关控件的使用

    <el-switch @change="test" on-value="1" off-value="0" v-model=" ...

  3. [Web 前端 ] ES6 == ES 2015

    cp from : https://www.cnblogs.com/ricoliu/p/5996149.html 遇到了一个困惑   原来称作es6的现在突然变成es2015 了 原因是这个事ecma ...

  4. Petri网

    Petri网是一种适合于系统描述和分析的数学模型,主要描述异步和并发关系.(或者Petri网是对离散并行系统的数学表示,适用于描述异步的,并发的计算机系统模型.) Petri网模型自然,直观,简单易懂 ...

  5. [转]PHP之APC缓存详细介绍(学习整理)

    From : http://www.2cto.com/kf/201210/160140.html 1.APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存 ...

  6. SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行

    ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列 ...

  7. 奇怪吸引子---AnishchenkoAstakhov

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  8. window API一天一练之邮槽

    邮槽通信的进程分为服务端和客户端.服务端创建邮槽,客户端通过邮槽名打开邮槽,获得句柄后可以向邮槽写数据. 邮槽通信是单向通信,只能由客户端向服务端发送数据.下面来看看有关邮槽的几个API HANDLE ...

  9. 面试题-Redis、MongoDB、Memcached[转]

    https://blog.csdn.net/gangsijay888/article/details/81213811 一.缓存 搞懂缓存那些事:https://blog.csdn.net/a7248 ...

  10. Doxygen简单经验谈。。。

    Doxygen,大名鼎鼎的文档生成工具,被Boost.OpenCasCade等诸多项目作为文档生成的不二人选.人说,才华横溢往往是高深莫测,这句话放在 Doxygen这里显然是不适用的.十八般武艺样样 ...