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. hydra 安装和使用

    udo add-apt-repository ppa:pi-rho/security sudo apt-get update sudo apt-get install hydra hydra -l r ...

  2. Easyui 页面设置加载完成之后,满屏

    js文件: if(top.location!=self.location){ top.location.href=self.location; }

  3. .Net Core配置文件读取整理

    一 .配置文件说明 1.配置,主要是 指在程序中使用的一些特殊参数,并且大多数 仅在程序启动的之后指定不需要修改. 2.在以前.Net项目中配置文件主要指app.config或web.config,但 ...

  4. 我的Java学习推荐书目

    一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长.推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的书籍. 一.基础类 ...

  5. 短址服务 api

    1  is.gd 他这个api简单: http://is.gd/api.php?longurl= 后面加网址就可以返回短址 2 Google URL Shortener API api地址: http ...

  6. 如何在windows2003(IIS6)下配置IIS,使其支持cshtml

    在开发环境机器上,安装WEB PAGES 后,会在 C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages 的下产生DLL 其中 Micr ...

  7. 在此处打开OpenPowershellHere右键 在此处打开命令窗口右键

    windows 10  右键添加在本文件夹打开cmd  或prowershell 在此处打开OpenPowershellHere右键 Windows Registry Editor Version 5 ...

  8. JavaScript:Events

    ylbtech-JavaScript:Events 1.返回顶部 JavaScript 事件参考手册 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行. 事件句柄 HTML 4.0 的新 ...

  9. [leetcode]Gray Code @ Python

    原题地址:https://oj.leetcode.com/problems/gray-code/ 题意: The gray code is a binary numeral system where ...

  10. 谷歌地图api访问失败

    在非外网情况下,我们调用谷歌api会出现加载不到地图的现象,此时可以换一下域名试试也许就好了 比如我自己访问api时时这样写的: https://maps.googleapis.com/maps/ap ...