硬链接和软链接的说明

1、硬链接和软链接的区别

   (1)、原理上:

                  【1】 硬链接(hard link):

                                                   文件A是文件B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。

 注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

  软链接(soft link):
  A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
   (2)、使用限制上:
              【1】 硬链接:
                                a:不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的”..”除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数)
                                b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下。
                                c:不能对不存在的文件创建硬链接,由原理即可知原因。
             【2】 软链接:
                               a.可以对目录创建软链接,遍历操作会忽略目录的软链接。
                               b:可以跨文件系统
                               c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了
   (3)、命令:
                     硬链接:ln 源文件名 链接名

                     软链接:ln -s 源文件名 链接名

2、硬链接和软链接的特点:

       【1】硬链接:

                        硬链接和软链接的说明

       【2】软连接:

                          硬链接和软链接的说明

3、  硬链接和软链接的作用
      【1】 硬链接:
                         硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。只删除一个连接并不影响节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。还有如果把链接名创建为一个以.开头的隐藏文件,还能很好的隐藏自己的隐私。
      【2】 软链接:
                         链接又称之为符号连接(Symbolic Link)。软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

原创文章,作者:1587291234,如若转载,请注明出处:http://www.178linux.com/81967

(0)
15872912341587291234
上一篇 2017-07-21
下一篇 2017-07-22

相关推荐

  • 第六周总结VIM编辑器的使用并完成练习题

    第六周 总结VIM编辑器的使用并完成练习题 1. VIM是什么? VIM(Vi IMproved)是从vi发展出来的一个文本编辑器。 2.为什么要使用VIM? VIM有代码补完,编译以及错误跳转等方便编程的功能,在程序员中广泛使用。对于大多数的用户来说,VIM有着比较陡峭的学习曲线,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。VIM是类Unix系统用…

    Linux干货 2017-09-02
  • ​mysql备份之lvm

    mysql备份之lvm 新建一个lvm磁盘,这里我建的lv为mydatalv,挂载到了/data下 [root@localhost ~]# lvs   LV       VG     Attr&nbs…

    Linux干货 2016-07-19
  • TCP 的那些事儿(下)

    这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的…

    Linux干货 2016-08-15
  • 文本处理工具sed、vim

    文本处理工具sed、vim 一、sed的使用 1、sed的概念 sed简单地说sed是一种行处理工具。 sed 是一种流性的行编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末…

    Linux干货 2016-08-11
  • LAMP

    练习:编译安装amp,提供两个基于主机名的虚拟主机      (1) https, 部署pma      (2) 部署wordpress 编译安装: mariadb: # wget 10.1.0.1:/pub/Sources/7.x86_64/mariadb/…

    Linux干货 2016-10-12
  • 实时获取MySQL的TPS、QPS(输出到屏幕)

    这个脚本挺好用的,例如我们在主库执行了一个大事务,结果导致从库的show slave status\G 一直卡在 system lock状态,我们用下面这个脚本就能知道到底是hang住了,还是只是执行缓慢(反应在脚本执行结果里面就是qps\tps是不停变动的)。 当然,从库一直处于system lock 状态,一般是因为我们从库也设置双1导致,只要…

    Linux干货 2017-05-07