码迷,mamicode.com
首页 > 其他好文 > 详细

硬链接和软链接文件

时间:2016-10-19 14:34:18      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:硬链接和软链接文件


1、硬链接文件

   硬链接是指通过索引节点(inode)来进行链接。在linux(ext2、ext3、ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型的都会给他分配一个编号,这个标号被称为inode节点标号,即文件在系统中的编号。

   在linux文件系统中,多个文件名指向同一个索引节点(inode)是正常并且允许的,这种情况的文件就被称为硬链接。提示:硬链接文件就相当于文件的另外一个入口。硬链接的作用是允许一个文件拥有多个有效路径名(多个入口),这样用户就可建立硬链接到重要的文件,以防止“误删”源数据,(很多硬件存储,如:netapp存储中的快照功能就是应用了这个原理,增加了一个快照就多了一个硬链接。)

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

因为文件系统(ext2)的原理是:只要文件的索引节点(inodex code)还有一个以上的硬链接,只删除其中一个硬链接(即:仅仅删除了该文件的连接指向)并不影响索引节点本身和其他链接(即文件实体并未删除),只有当文件的最后一个连接被删除后,此时如果有新数据要存储到硬盘上或者通过类似fsck做磁盘检测的时候才会被删除。

硬链接小结:

(1)具有相同的inode节点号的多个文件时互为硬链接文件

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

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

(4)当所有的硬链接文件及源文件被删除后,在存放新的数据会占用这个文件的空间,或者磁盘FCSK检查的时候,删除的数据也会被系统回收

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

(6)通过给文件设置硬链接文件,来防止删除重要文件被误删除

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

(8)硬链接文件可以用rm命令删除

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

硬链接实例:

[root@oldboy ~]# cat oldboy.txt
I am studying linux.
[root@oldboy ~]# ln oldboy.txt oldboy_hard_link
[root@oldboy ~]# ls -lhi old*
392964 -rw-r--r--. 2 root root 21 Mar 13 04:52oldboy_hard_link        #两个文件节点号相同
392964 -rw-r--r--. 2 root root 21 Mar 13 04:52oldboy.txt
[root@oldboy ~]# rm -rf oldboy.txt
[root@oldboy ~]# cat oldboy_hard_link
I am studying linux.


2、软链接文件

   软连接(soft link)也成为符号链接(Symbolic link)。linux 里的软链接文件就类似于windows系统中的快捷方式。linux里的软链接文件实际上是一个特殊的文件,文件类型是l。 软连接指向另一源文件的位置信息内容,因此通过访问这个“快捷方式”就可以迅速定位到软连接所指向的源文件实体。

软连接小结:

1)软连接类似windows快捷方式(可以通过readlink查看其指向)

2)软连接类似一个文本文件,里边存放的是源文件的路径,指向源文件实体

3)删除源文件,软连接文件依然存在,但是无法访问指向的源文件路径内容

4)失效的时候一般是白字红底闪烁提示

5)执行“ln –s 源文件 软连接文件”,即可完成创建软连接(目标不能存在)

6)软链接和源文件是不同类型的文件,也是不通的文件,inode号也不相同

7)删除软链接文件可以用rm命令

软连接实例:

[root@oldboy ~]# cat oldboy.txt
I am studying linux.
[root@oldboy ~]# ln -s oldboy.txt oldboy_soft_link
[root@oldboy ~]# ls -hil oldboy*
399710 lrwxrwxrwx. 1 root root 10 Mar 13 04:55oldboy_soft_link -> oldboy.txt
392964 -rw-r--r--. 1 root root 21 Mar 13 04:54oldboy.txt
[root@oldboy ~]# rm -f oldboy.txt
[root@oldboy ~]# cat oldboy_soft_link
cat: oldboy_soft_link: No such file or directory

3、图示软链接和硬链接原理

技术分享

4、目录链接小结:

(1)对于目录不可创建硬链接,但是可以创建软连接

(2)对于目录的软链接是生产场景运维中的常用技巧(例如apache应用)

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

(4)每个目录下边都有一个硬链接“.”号,和相对应上级目录的硬链接“..”

(5)在父目录里创建一个子目录,父目录的硬连接数增加1(每个子目录里都有..来指向父目录)

但是在父目录里创建文件,父目录的链接数不会增加


5、系统删除文件原理

一个文件被删除必须满足的条件:

静态文件:

i_link和i_count的数为0的时候才可以删除文件

动态文件(被其他进程调用的文件):

i_link和i_count的数为0的时候并且需要重新启动调用的进程开可以删除文件

原理可以总结成如下图所示:

技术分享

结论:

当系统文件存在硬链接文件的时候,删除源文件后,硬链接不失效,可以通过硬链接继续放问源文件;当系统文件存在软链接文件的时候,删除源文件后,软链接失效,无法通过软链接文件访问源文件。



硬链接和软链接文件

标签:硬链接和软链接文件

原文地址:http://xiaolian.blog.51cto.com/11219763/1863311

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!