硬链接与软链接的缠绵

  Preface:

      本文以站在不懂到懂的角度,知识开始理解有错误,但慢慢进阶,最后豁然开朗。要点评先看完再说。  

  Basic_Knowledge:

      在linux下有硬链接和软链接两种,硬链接为文件的别名,它和软链接一样,都指向文件,但是硬链接不是一个文件。

      linux下判定是不是一个独立文件看的就是其inode是不是独一无二的,ls -l 一下,如果链接数是1,那么这肯定是一个文件。

      命令:ex > ln      test     f_h     ||       cp     -l    test    f_h       //硬链接

         ex > ln      test     s_s     ||       cp     -s   test    s_s      //软链接

      Hard Link:  每个文件都会都会占用一个inode,文件内容由inode的记录来指向。

         想要读取该文件,必须经过目录所记录的文件名来指向正确的inode号码来读取。

        文件名其实只与目录有关,但是文件内容与inode有关。一个inode可能会与多个文件名关联,这就是硬链接的由来。

          (图出处来自网上,作者如有觉得不妥请留言)

      Symbolic Link:  软链接其实就像windows桌面上面放的快捷方式一样,删除了软链接就会删除源文件,而硬链接不会,软链接独立于源文件,指向源文件,但是其所占有的inode却和源文件不同。

          (图出处来自网上,作者如有觉得不妥请留言)

  Practice:

        0x01:

         

        0x02:

         由于三个文件名都指向2362180号inode,所以第二列都显示3,f_h、s_h的都是硬链接,但这里居然显示的是普通文件。          

         

         

                软链接所在的inode都互相独立,即使都指向同一个文件。

          0x03:

         胡思乱想一下,创建一个软链接的硬链接会发生什么,实践一下。

         

           结果就是软链接的硬链接还是一个软链接,是不是有点绕口,两个软链接都指向一个文件。

      0x04:

          那如果再创建一个硬链接的软链接会如何?

          

          创建的这个软链接指向s_h,inode唯一。

      0x05:

          鸟哥上面说,删除软链接,源文件就会删除,试一下。

          

         = =,郁闷。

      0x06:

          还好源文件还在,我们试试把源文件删除,然后再用软链接、硬链接打开试试。

          

              ,

            

              

            

               

        细节不讲了,直接说原因,软链接独立,源文件删除后,由于没有了源文件的文件名,所以会出现打开文件为空的现象。

        但是硬链接则不同,文件打开最关键的一点就是找到文件的inode,源文件即使删除,但硬链接文件知道源文件的inode号码,还是可以打开文件读取数据。

        

          (图出处来自网上,作者如有觉得不妥请留言)

              End:  书上说硬链接不是文件,只是文件的别名。在我看来它就是一个文件,虽然与其它文件共享一个inode,在源文件看来它不是一个文件,只是自己的别名,但是它和源文件数据什么都是一样,只不过名字不一样。在硬链接文件看来,源文件和自己(数据、权限等,除文件名)一样,那源文件岂不是自己的别名 了,源文件岂不是文件了?换个对象考虑考虑。再者,有一句话说得好:linux下一切皆文件。可能你还是有疑惑:硬链接本来就不是文件。但是我把源文件删除之后,为何用硬链接还是可以读出数据(这里inode起着很大作用,只要有inode就可以找到数据,前提是数据还没有被其他数据覆盖),没有文件,何来数据,没有地球,何来地球万物。

        以上只是个人观点,看客请保持自己的思维。

    

时间: 2024-11-10 01:14:47

硬链接与软链接的缠绵的相关文章

Linux硬链接、软链接的创建及两者的区别

一.硬链接 链接数就是名字的数量: ln(link) 硬链接,多个相同的inode文件(同分区),多个硬链接文件的存在在硬盘上只占用一个文件的容量. 创建的硬链接是平等的,inode相同,删除某一个互不影响,其他文件仍然可以使用. 硬链接的本质:给一个文件创建多个名字. 创建多个硬链接,观察链接数的变化(+1),链接数是几就是有几个文件名. 同一分区中,同一个inode号必定是一个文件. 原始的文件 [[email protected] testdir]# ll -iman.txt 15 -rw

linux中的硬链接和软链接

一.ln命令概述 它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间. 二.硬链接和软链接的区别 硬链接:是通过文件系统的inode连接来产生新的文件名,而不是产生新文件 软链接:类似Windows的快捷方式功能的文件,可以让你快速连接到目标文件(或目录) 三.硬链接 语法:ln

实例讲解Linux系统中硬链接与软链接的创建

导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说起,下面就以实例讲解Linux系统中硬链接与软链接的创建,来实际看看Linux中两种链接方式的不同. 首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现

RHCE系列之文件管理----硬链接和软链接

Linux 文件系统最重要的特点之一是它的文件链接. 链接是对文件的引用,这样你可以让文件在文件系统中多处被看到. 在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行.编辑和访问.对系统中的其它应用程序而言,链接就是它所对应的原始文件.当你通过链接对文件进行编辑时,你编辑的实际上就是原始文件.切记,链接并不是文件的副本. 在linux系统中,链接可分为两类:一类被称为硬链接(Hard Link),另一类被称为软链接或符号链接(Symbolic Link). 硬链接

Linux硬链接和软链接

1.硬链接:文件别名通过前面讲的Linux ext2文件系统,我们知道在目录文件的block中,存放着目录下文件的文件名和对应的inode.可以将多个文件名对应到同一个inode,新建一条文件名链接到某inode号,这就是硬链接. 可以看出,硬链接只是新建了一个文件名,关联到一个已存在的文件.此时,目录下的block多写了一个文件名/inode的数据所以,硬链接没有增加inode和block的耗用. 2.软链接:类似windows中的快捷方式软链接的实质是,创建了一个独立的文件,而读取这个文件时

linux下硬链接和软链接

[硬链接] 硬链接是指通过索引节点进行链接,太复杂了看操作吧. 硬链接的创建 [[email protected] ~]# mkdir -p /test/oldboy/   创建一个目录 oldboy/ [[email protected] ~]# cd /test/oldboy/             切换到这个目录中来 [[email protected] oldboy]# touch oldboyfile     #创建一个测试文件 制作硬链接 [[email protected] ol

硬链接和软链接的区别

# 硬链接和软链接的区别## 1.概念 在linux中,链接可分为两种:一种为硬链接,另一种为软链接. 硬链接:ln 源文件 目标文件软链接:ln -s(soft)源文件 目标文件### 硬链接 硬链接是指通过索引节点inode来进行链接.linux系统中每个文件对应一个inode,并且允许多个文件名指向用一个inode.这种情况的文件就成为硬链接. 它的作用之一就是允许一个文件拥有多个入口,防止重要数据误删. 硬链接的原理: ### 软链接 软链接也称为符号链接,相当于windows中的快捷方

转:理解 Linux 的硬链接与软链接

Linux 的文件与目录 现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程 创建信息的逻辑单元可被多个进程并发使用.在 UNIX 系统中,操作系统为磁盘上的文本与图像.鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式.换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性.为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念.目录使文件可被分类管理,且目录的引入使 L

linux硬链接与软链接

硬链接概念 硬链接(hard link, 也称链接)就是一个文件的一个或多个文件名 硬链接建立起来后,源文件和链接文件同步,修改任何一方文件都会被修改 建立链接可以节省空间,只需维护链接关系,不需要拷贝文件 硬链接和软链接的本质区别 硬链接可认为是一个文件拥有两个文件名;而软链接则是系统新建一个链接文件,此文件指向其所要指的文件 硬链接的局限性 软链接可以跨文件系统:硬链接不可以 软链接可以对一个不存在的文件进行链接:硬链接不可以 软链接可以对目录进行连接,硬链接不可以 软链接克服了硬链接中的局