Linux文件的软链接和硬链接

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.通过实验加深理解

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

(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]http://zhidao.baidu.com/link?url=U9a3ioCFwNCSsubL1Fg9FKDHgs6q5GE8qnFY_HdYh-9elU4Cwl0PQV4_zSnVYQqluKjLJ2Y8ZEtUss-r2jZzla

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 16:17:34

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

Linux命令——建立软链接和硬链接

Linux 系统中有软链接和硬链接两种特殊的"文件". 软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录. 硬链接则透过文件系统的inode来产生新档名,而不是产生新档案. 创建方法: #软链接 ln -s source targe #硬链接 ln source target 原文地址:https://www.cnblogs.com/meng9688/p/10216524.html

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

一.链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link).两种链接的本质区别在于inode.以下是详细介绍: 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块领域将数据取出来.而硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间.硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同

Linux下的软链接与硬链接

首先聊聊Linux中使用哪个命令创建链接文件,然后咱们在聊聊软链接和硬链接的区别. 使用ln命令可以创建某个文件的链接文件 用法:ln [-s -v] src dest 创建一个硬连接文件:ln 原文件 硬连接文件 硬链接与源文件的inode号相同,使用stat命令可以查看文件的元数据信息. 创建一个软连接文件:ln -s 原文件 软连接文件 加-s表示创建软连接(符号链接) 注意:创建连接文件时,指定源文件时, "原文件的路径"可以是绝对路径也可以是相对路径,但是要注意,如果&quo

Linux 下的软链接和硬链接

Linux有两种链接方式,软链接和硬链接~~~默认情况下 ln命令产生硬链接 硬链接:通过索引节点来进行链接,(索引节点是保存在磁盘分区中的文件不管什么类型给它分配的编号),多个文件名指向同一索引节点是存在的,通常这种链接就称为硬链接.在你选定的位置生成一个文件镜像. 作用:允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到.重要的文件上,以防止文件被误删. 软链接:软链接是一种符号链接,在符号链接中,文件实际上是一个文本文件,其中包含着另一个文件的位置信息,只会在你选定的位置生成一个文

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

ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名.而且,即使我们删除这个链接,也不会破坏原来的目录. 语法:ln [选项] 目标 [链接名] ln [选项] 目标 目录 链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).

Linux中的软链接与硬链接

什么是链接文件? 1,硬链接:多个文件指向同一个inode的不同路径彼此成为硬链接. 2,软链接:(内存大小为字符串单位) Inode没有数据,只是储存了一个路径字符串,再找该路径寻文件 *硬链接的次数,小于等于1时,文件可以彻底删除 大于1时,文件不易删除 ln  [ -s  -v ] SRC  DEST -s  创建软链接 -v  显示创建过程 无选项表示创建硬链接 创建硬链接 Abc与创建链接后的DEF的inode号相同. 创建软链接 总结 硬链接: 1.只能对文件创建,不能应用于目录 2

Linux系统的软链接与硬链接有什么区别?

Linux系统中的文件都文件名和数据,在 linux 上面被分为两个部分:元数据与数据.用户数据,即文件数据块( data block ),数据块是记录文件真实内容的地方,而元数据是文件的附加属性,如大小,创建时间,所有者等信息.在 Linux 中,元数据中的 inode 号( inode 是文件的元数据的一部分,但其不包含文件名, inode 号即索引节点号)才是文件的唯一标识而不是文件名.文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据快.下图为 程序通过

linux下的软链接和硬链接

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

文件的软链接、硬链接的区别

硬链接和软链接虽然都是链接文件,但是二者还是有很大区别的,主要区别在在于以下几点: 1)硬链接是创建一个指向文件的节点(inode),这样可以有效的防止文件的被错误的删除.因为在linux系统中,删除一个文件实质上是删除该文件节点的信息,从而切断了节点与文件之间的联系.当给一个文件创建了硬链接之后,删除文件时只会减少文件的链接数即节点数.当节点数为0 的时候才会真正的删除该文件.软连接类似于windows下的快捷方式,是一个完整的文件,链接文件和目标文件之间只有指向的关系.源文件删除后链接文件指