标签:硬链接和软链接文件
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