linux链接

Posted LEO00

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux链接相关的知识,希望对你有一定的参考价值。

linux链接

linux链接简介

在linux系统中,链接可以分为两种,一种为硬链接(Hard Link),另一种为软链接或符号链接(Symbolic Link or Soft Link).

在默认不带参数的情况下,执行ln命令创建的链接就是硬链接。

如果使用ln -s 创建链接则为软链接,前面文件类型为l(字母L)的就是软链接。

例子:

硬链接 :ln 源文件 目标文件;

软链接:ln -s 源文件 目标文件(目标文件不能事先存在)

硬链接简介

指索引节点(Inode)来进行链接,在linux(ext2/ext3/ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点号编号(index inode)简称inode,即在系统中文件的编号。在linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的,这种情况的文件就称为硬链接。提示:硬链接文件就相当于文件的另一个入口,硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件存储,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接。)

为什么一个文件建立了硬链接就会防止数据误删呢?

因为文件系统(ext2)的原理是,只要文件的索引节点(inode index)还有一个以上的硬链接;如果只删除其中一个硬链接(即仅仅删除了该文件的链接指向)并不影响索引节点本身和其他链接(即数据文件实体并未被删除),只有当文件的最后一个链接被删除后,此时如果有新数据要存储到硬盘上是或者系统通过类似fsck做磁盘检查的时候,被删除类似的数据块及目录的链接才会被释放,空间被新数据占用并覆盖。此时,数据就再也无法找回了,也就是说,在linux系统中,删除静态文件(没有进程调用)(目录也是文件)的条件是与之相关的索引硬链接文件均被删除;

硬链接知识小结:

1、具有相同inode节点号的多个文件互为硬链接文件。

2、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。

3、只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除。

4、当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收(养成删除及多套环境测试的好习惯)

5、硬链接文件就是文件的另一个入口(相当于超市的前、后门一样)。

6、可以通过给文件设置硬链接文件,来防止重要文件被误删。

7、通过执行命令“ln源文件 硬链接文件”,即可完成创建硬链接。

8、硬链接文件时普通文件,因此可以用rm命令删除。

9、对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除,i_link的查看方法(ls -l)结果的第三列就是

软链接简介

软链接(soft link)也称为符号链接(symbolic link)。linux里的软链接文件就类似于Windows系统中的快捷方式。

linux里的软链接文件实际上是一个特殊的文件,文件类型是l.软链接文件实际上可以理解为一个文本文件,这个文件中包含有软链接指向另一个源文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

软链接的创建:执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接;

误区:创建软链接源文件时需要存在的,要创建的软链接文件时不能存在的,是要用ln命令创建的;

软链接知识小结:

1、删除软链接文件对源文件及硬链接文件无任何影响。

2、删除硬链接文件对源文件及软链接文件无任何影响。

3、删除源文件,对硬链接文件没有影响,但是会导致软链接文件失效,白字红底闪烁。

4、同时删除源文件oldboyfile,硬链接文件oldboyfile_hard_link,整个文件会真正的被删除。

5、很多硬件设备中的快照功能,就是利用了硬链接的原理。

6、源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件的多个入口。

7、源文件和软链接文件索引节点号不同,是不同的文件,软链接相当于源文件的快捷方式,含有源文件的位置指向。

有关目录的链接小结:

1、对于目录,不可以创建硬链接,但可以创建软链接。

2、对于目录的软链接是生产场景运维中常用的技巧(例子:第二关第4题apache考试题)

3、目录的硬链接不能跨越文件系统(从硬链接原理可以理解)

4、每个目录下面都有一个硬链接“.”号,和对应上级目录的硬链接“..”。

5、在父目录里创建一个子目录,父目录的链接数增加1(每个子目录里都有..来指向父目录)但是在父目录里创建文件,父目录的链接数不会增加。

问题一

当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件正确的读取及写入内容,这是为什么?

解答:这是因为rm操作只是将文件的i_nlink减少了,如果没其他的链接i_nlink就为0了,但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但是系统并没有真正的删除这个文件,当只有i_nlink及i_count都为0的时候,这个文件才会被真正的删除,也就是说,还需要解除该进程对该文件的调用才行。

问题二

以上讲的i_nlink及i_count是文件删除的真实条件,但是当文件没有被调用时,执行了rm操作删除文件后是否还可以找回被删的文件呢?

解答:rm操作只是将文件的i_nlink减少了,或者说设置为0了,实际就是讲文件名到inode的链接删除了,此时,并没有删除文件的实体即(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果此时继续写入数据,那么当新数据就可能会被分配到被删除的数据的block数据块,此时,文件就会被真正的回收了,那时候神仙也没有办法了。

 

以上是关于linux链接的主要内容,如果未能解决你的问题,请参考以下文章

linux链接

linux中,啥是连结档,链接,链接目录

Linux中硬链接和软链接的区别与联系!

Linux的硬链接和软链接

linux 链接的使用 创建和删除符号连接(软、硬链接)

linux软链接硬链接