09-Linux基础入门-文件和目录的属性及权限之链接(综合网络整理)

Posted 张雨嘉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了09-Linux基础入门-文件和目录的属性及权限之链接(综合网络整理)相关的知识,希望对你有一定的参考价值。

一、链接的概念
在Linux中,链接可分为两种:一种是硬链接,另一种为软连接或符号链接。可以用ln这个命令来创建链接文件,如果后边不跟参数的话,默认创建的是硬链接。如果使用ln -s创建链接则为软链接,前面文件类型为字母l的是软链接。
创建硬链接:ln 源文件 目标文件
创建软链接:ln -s 源文件 目标文件(目标文件不能事先存在)


二、硬链接
1、定义
硬链接是指通过索引节点(inode)来进行链接。在Linux(ext2-ext4)文件系统中,保存在磁盘分区中文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(index inode)简称inode,即在系统中文件的编号。
在Linux文件系统中,多个文件名指向同一个索引节点(inode)是正常允许的,这种情况的文件就称为硬链接。两个不同的文件名对应同一个inode节点号,他们两个之间就叫做硬链接或者叫互为硬链接。硬链接文件就相当于文件的另外一个入口。硬链接的作用之一是允许一个文件拥有多个有效路径名(多个路口),这样用户就可以简历硬链接到重要的文件,以防止“误删”源数据。
例子:

        [root@centos ~]# echo 1  >a 
        [root@centos ~]# ls -l a 
        -rw-r--r-- 1 root root 1 2月   5 22:07 a # 硬链接的个数为1
        [root@centos ~]# ln a b # 创建硬链接
        [root@centos ~]# ls -l a
        -rw-r--r-- 2 root root 1 2月   5 22:07 a # 硬链接的个数为2
        [root@centos ~]# ls -hil a b 
        # 硬链接还有一个作用是备份 此处意思为查看节点号
        2359310 -rw-r--r-- 2 root root 1 2月   5 22:07 a
        2359310 -rw-r--r-- 2 root root 1 2月   5 22:07 b
        # 查看后发现节点号相同
        [root@centos ~]# rm -f a # 删除a
        [root@centos ~]# ls -hil a b 
        ls: 无法访问a: 没有那个文件或目录
        2359310 -rw-r--r-- 1 root root 1 2月   5 22:07 b
        [root@centos ~]# cat b
        1
        #发现b还是存在

因为文件系统(ext2)的原理是,只要文件的索引节点(inode index)还有一个以上的硬链接,只删除其中一个硬链接相当于只删了文件的链接指向。只有当一个文件的所有链接都被删除了,这个时候这个文件可能被删除了。就算不删除,当有新数据要存到磁盘上或做类似于fsck磁盘检查的时候,它首先先回收这些(认为他是垃圾数据)。
在Linux系统中,删除静态文件(没有进程调用)的条件是与之相关的所有硬链接文件均被删除(暂时这样理解即可,以后会说它和进程的占用也有关)。
2、原理

3、硬链接的创建
ln 源文件 硬链接文件
4、硬链接知识小结
①具有相同inode节点号的多个文件时互为硬链接文件。
②删除硬链接文件或者删除源文件任意之一,文件实体并未删除。
③只有删除了源文件及所对应的硬链接文件,文件实体才会被删除。
④当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者硬盘fsck检查的时候,删除的数据也会被系统回收(养成删除及多套环境测试的好习惯)。
⑤硬链接文件就是文件的另一个入口(相当于超市的前门、后门一样)。
⑥可以通过给文件设置硬链接文件,来防止重要文件被误删。
⑦通过执行命令“ln 源文件 硬链接文件”即可完成创建硬链接。
⑧硬链接是普通文件,因此可以用rm命令删除。
⑨对于静态文件(没有进程正在调试的文件)来讲,当对应链接数为0(i_link),文件就被删除,(i_link查看方法:ls -l结果的第三列就是)。


三、软链接
1、定义
在Linux中,软链接被称符号链接,它相当于Windows中的快捷方式。
例子:

        [root@centos ~]# touch file
        [root@centos ~]# ln -s file soft_file
        [root@centos ~]# ls -l file soft_file -i #创建软链接
        2359310 -rw-r--r-- 1 root root 0 2月   5 22:46 file
        2359311 lrwxrwxrwx 1 root root 4 2月   5 22:47 soft_file -> file
        [root@centos ~]# readlink soft_file  #查看软链接里包括什么
        file

2、原理

3、软链接的创建
执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接。
误区:创建软链接源文件是需要存在的,要创建的软链接文件时不能存在的,是要用ln命令创建的。
4、软链接知识小结
①软链接类似于windows的快捷方式(可以通过readlink查看其指向)。
②软链接类似一个文本文件,里边存放的是源文件的路径,指向源文件实体。
③删除源文件,软链接文件依然存在,但无法访问指向的源文件路径内容了。
④失效的时候一般是白字红底闪烁提示。
⑤执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接(目标不能存在)。
⑥软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同。
⑦软链接文件的类型为(l),可以用rm命令删除。


四、总结
1)有关文件链接的总结
1、删除软链接文件对源文件及硬链接文件无任何影响。
2、删除硬链接文件对源文件及软链接文件无任何影响。
3、删除源文件,对硬链接没有任何影响,但是会导致软链接文件失效,白字红底闪烁。
4、同时删除源文件、硬链接文件,整个文件会真正的被删除。
5、很多硬件设备中的快照功能,就是利用了硬链接的道理。
6、源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或另一个文件的多个入口。
7、源文件和软链接文件索引节点号不同,是不同的文件,软链接相当于源文件的快捷方式,含有源文件的位置指向。
2)有关目录链接的总结
1、对于目录,不可以创建硬链接,但可以创建软链接。
2、对于目录的软链接是生产场景运维中的常用的技巧。
3、目录的硬链接不能跨越文件系统(从硬链接的原理可以理解)
4、每个目录下面都有一个硬链接“.”号,和对应上机目录的硬链接“..”。
5、在父目录里创建一个子目录,父目录的链接数增加1(子目录里都有..来指向父目录),但是在父目录里创建文件,父目录的链接数不会增加。


欢迎关注
新浪微博:https://weibo.com/yougazhang0506
微信公众平台:张雨嘉

我的网站:http://www.zhangyujia.cn
51CTO博客:http://blog.51cto.com/11099293
CSDN博客:http://blog.csdn.net/u013260195
GitHub:https://github.com/zhangyujia0506/


以上是关于09-Linux基础入门-文件和目录的属性及权限之链接(综合网络整理)的主要内容,如果未能解决你的问题,请参考以下文章

08-Linux基础入门-文件和目录的属性及权限之文件类型文件扩展名及文件权限基础

06-Linux基础入门-文件和目录的属性及权限之inode与block

10-Linux基础入门-文件和目录的属性及权限之用户与组和时间戳基础

Linux入门第二篇:shell命令及运行原理和Linux权限的概念

13-Linux基础入门-Linux中的文件及目录权限(综合网络整理)

< Linux入门 > shell运行原理及Linux权限的理解