在linux中,链接分为两种,一种为硬链接,一种为软链接, ln 命令就是创建链接文件的,在默认不带参数的情况下,执行ln创建的链接就是硬链接。

        如果使用ln -s 创建的链接为软链接,前面文件类型l是软链接。

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

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

软链接与硬链接_硬链接

硬链接:

       硬链接是通过索引节点进行链接,在LINUX文件系统中,保存在磁盘分区的文件不管是什么类型都会给他分配一个编号,这个编号就是被称为索引节点编号,即在系统中文件的编号。

      在Linux中,多个文件名指向同一个索引节点是正常且允许的,这种情况就是硬链接。提示:硬链接文件就相当于文件的另一个入口。硬链接的作用就是允许一个文件拥有多个有效路径名,这样用户就可以硬链接到重要的文件,以防止误删数据。

 

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

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

 

 

硬链接示意图

软链接与硬链接_源文件_02

 

 

复制和硬链接的区别

         复制为两个文件,inode索引不一样,指向的地址不一样,修改一个文件对另一个文件没有影响。硬链接是一个文件,所有硬链接指向的地址一样,inode一样,修改文件所有硬链接里面的文件内容都会发生改变。

 

 

软链接:

       相当于一个快捷方式,软链接文件名相当于一个新的文件,有新的inode,如果源文件被删除,软链接指向无效

 

注意事项

          a: 目录可以创建软链接,不能创建硬链接

          b: 目录的硬链接不能跨越文件系统

          c:在父目录里面创建一个子目录,父目录的链接数增加1,但是在父目录里面创建文件,父目录的链接数不会增加1

          如果一个目录有n个软链接  则该目录下面有n-2个子目录

 

 

Linux下软链接与硬链接的区别

        解答

        a:默认不带参数的情况下,ln 命令创建的是硬链接,带-s参数的软链接

        b:硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号与源文件不同。

        c:ln命令不能对目录创建硬链接,但可以对目录创建软链接,对目录的软链接经常被用到

        d:删除软链接文件,对源文件及硬链接文件无任何影响。 

        e;删除文件的硬链接文件,对源文件及软链接文件无任何影响。

        f:删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效

        g:同时删除源文件及硬链接文件,整个文件才会被彻底删除

        h:很多硬件设备的快照功能,使用的就是类似硬链接的道理。

        i:软链接可以跨越文件系统,硬链接不能跨越文件系统。