精华内容
下载资源
问答
  • 硬链接与软连接

    千次阅读 2018-09-17 16:13:24
    硬链接:简单说,文件名就是文件的硬链接硬链接就是给文件起了个别名,对应的 inode 原文件一样 链接:简单说,类似于快捷方式,它有自己单独的 inode,指向了被链接的文件(跟路径关联) 画个图了解下: ...

    硬链接:简单说,文件名就是文件的硬链接,硬链接就是给文件起了个别名,对应的 inode 与原文件一样

    软链接:简单说,类似于快捷方式,它有自己单独的 inode,指向了被链接的文件(跟路径关联

    画个图了解下:

    实验验证:

    创建一个文件,text.txt

    # cd test
    # touch test.txt
    # ls -al

    可以看到,硬链接数为 1

    # ln test.txt hard_link
    # ls -al

    可以看出,在创建了 hard_link 后,test.txt 硬链接数变为 2 了,

    而 hard_link 指向的文件 inode 和 test.txt 一样,因此也显示 2 个硬链接数

    我们再创建一个软链接:

    # ln -s test.txt soft_link
    # ls -al

    可以看出,软链接自身的硬链接数为 1,原来的 test.txt 和 hard_link 硬链接数依然为 2

    软链接的 inode 和硬链接的 inode 并不是一个

    下面我们删除 test.txt:

    # rm -f test.txt
    # ls -al

    可以看到,hard_link 硬链接数变为 1 了,而 soft_link 已经失效,因为它指向的路径不存在了

    我们编辑下 hard_link

    # echo "hello man" > hard_link

    下面,恢复 test.txt

    # ln hard_link test.txt
    # ls -al

     

    可以看到,软链接恢复正常了

    再看看内容

    # cat soft_link

     

    证明,hard_link 与 test.txt 确实是同一个文件

    只有当一个文件的硬链接数为 0,它才会被删除

     

    附:硬链接的限制

    1.  不允许普通用户给目录创建硬链接 (可能把目录树变成环形图,从而无法定位一个文件)

    2.  不能跨文件系统创建硬链接

    展开全文
  • 在学习过硬链接和软连接的知识后,我们在做实验的过程中会发现,创建的硬链接会占用磁盘的空间,而我们学习过成中了解到,硬链接只是创建一个文件源文件相同的inode号,那怎么还会占用磁盘空间呢?带着疑问,跟随...

    在学习过硬链接和软连接的知识后,我们在做实验的过程中会发现,创建的硬链接会占用磁盘的空间,而我们学习过成中了解到,硬链接只是创建一个文件与源文件相同的inode号,那怎么还会占用磁盘空间呢?2fac962bb5a04a7a01ba7d9445b0c5bd.gif带着疑问,跟随夹克来进行一些实验进行验证并得出结论:

    首先我们再来回顾一下关于 硬链接与软连接的知识:

    硬链接的特点:

    cedb74f3bbaa2e59ba84fb83b4875811.png

    592be353d86c19272e585271d2f5db2e.gifl创建硬链接会增加额外的记录项以引用文件

    l对应用于同一文件系统上的一个物理文件

    l每个目录引用相同的inode 号

    l创建时链接数递增

    l删除文件时,递减链接数,当链接数为0时,该文件已被删除

    l硬链接的建立是不能越驱动器或分区的

    l语法为:ln filename linkname

    软链接的特点:

    ac239c8ab05ba4627d5f55005594525f.png

    592be353d86c19272e585271d2f5db2e.gifl与硬链接最大的不同就是,软链接并不使用相同的inode号,同时

    也不增加或减少目标文件inode的引用计数

    l创建的链接只是对应的指向源文件的路径,所以可以对目录进行链     接,硬链接中只能对文件进行链接,

    l既然软链接是指向的一个文件的路径,所以可以跨越分区进行。

    l语法为:ln –s filenamelinkname

    硬链接测试:

    从上面我们对硬链接和软链接的特点分析可知道,硬链接所创建的是一个使用相同的inode号,根据我们的理解,两个相同的文件对应一个inode号,指向硬盘中相同的数据群块,但是我们通过下面一个实验发现有些蹊跷,一起来看看吧!

    在/app目录下创建一个文件,我这里创建了一个4.9G大的文件,

    96548e3a64f582e0e25762ff76eb4b9c.png

    接下来我们来设置一个硬链接:

    c273676da6f4d88c6fa6b20ec1ac1d4a.png

    咦?怎么大小变成9.8G了呢?这完全是翻倍了呀!小伙伴们是不是有了疑问,统计的数据反应出硬链接占用了同的空间,我刚开始也很郁闷,一度怀疑是不是硬链接也占用了空间,所以随后我又查了两个文件的inode 号,如下:

    621a092a1592e7432134affccc06dbca.png

    表明两个文件公用的是一个inode号,所以证明它们指向的是同一个数据块(在文件系统中一个inode号对应一个数据块群),并没有重新占用其他的数据块,所以也并不是复制了相同的文件,同时当改变其中一个文件的数据后,查看与之硬链接的文件其数据也是随之同步的,这迹象也表明对应的是一个数据块,而正真的问题并不是硬链接的问提,是这个ll –h 或者 ls –h这命令进行统计文件总大小的时候并不是从磁盘进行统计的,而是根据文件属性中的大小叠加得来的。而硬链接的文件属性中的大小就是就是inode号对应的数据块的大小,所以total中进行统计就把各个文件属性中的大小加起来作为总和,这种统计是不标准,也不具有代表性的,正真的查看某个文件夹占用磁盘空间大小命令是:du –h  这个命令是从磁盘上进行统计,不会被文件的属性中大小影响,所以更准确,测试结果如下图所示:

    5fb2f65f1050e0a559b69d10f5e75079.png

    从上面的测试中,我们看到真实的磁盘容量并没有改变,所以可以得出结论:

    硬链接并不占用磁盘空间!48411b30cc09bf1845aafaede5ac5835.gif

    软链接测试:

    对于软链接就更好理解了,并没有出现想上面出现的问题,我们同样在/app目录下创建一个软链接,显示如下图:

    878ee51119b82734c7492d443367694a.png

    从上面的测试结果我们看到,软链接的inode号并不一样,链接的文件所占用的空间也是极小的,这个链接文件C1的数据中仅存储了一个路径而已,所以这部分大小只是路径的大小。

    从上面两个实验,我们可以得出一个结论:c892a66900c4250c429cbcc5c082d55d.png

    硬链接不占用磁盘空间,软链接占用的空间只是存储路径所占用的极小空间。

    展开全文
  • Linux文件的硬链接与软连接

    千次阅读 2017-04-24 13:08:29
    Linux文件系统下有两个特殊的文件,分别叫硬链接文件和软连接文件。硬链接文件是一种引用计数的运用,软连接可以理解为Windows下面的快捷方式。硬链接硬链接的实质就是通过文件的inode节点进行连接。我们都知道,...

    Linux文件系统下有两个特殊的文件,分别叫硬链接文件和软连接文件。硬链接文件是一种引用计数的运用,软连接可以理解为Windows下面的快捷方式。

    硬链接

    硬链接的实质就是通过文件的inode节点进行连接。我们都知道,Linux下每个文件都对应一个inode结点,都有一个单独的inode编号。而硬链接不同,每一个硬链接的inode都与源文件相同。假设我对文件A建立了一个硬链接文件B,此时B的inode编号与A相同。
    每个文件可以建立一个或多个硬链接,这样可以达到“防误删”的功能,当删除了源文件时,还可以通过硬链接文件来访问文件数据。
    我们可以通过下图来理解硬链接:
    这里写图片描述

    引用计数

    系统通过引用计数的方式来管理源文件和这些个硬链接的。
    我们使用stat指令查看文件inode信息,会发现有个Links的选项:

    [lzk@localhost ~]$ stat file 
      File: `file'
      Size: 32          Blocks: 8          IO Block: 4096   regular file
    Device: 802h/2050d  Inode: 5740        Links: 1
    Access: (0664/-rw-rw-r--)  Uid: (  500/     lzk)   Gid: (  500/     lzk)
    Access: 2017-04-23 22:22:23.452294600 +0800
    Modify: 2017-04-23 22:21:55.415294411 +0800
    Change: 2017-04-23 23:11:31.365292371 +0800
    

    Links的初始值为1,没当我们为它创建一个硬链接,它的值就会加1。每当删除一个硬链接文件,它的值就会减1。

    指令ln用来创建硬链接文件。

    ln [源文件] [硬链接文件]

    eg:

    这里写图片描述

    从上例可以看到,当一个文件Links(引用计数)不为1的时候,我们删除一个源文件或者硬链接文件并不会删除文件数据。当Links为1的时候,再删除就会将数据删除。

    ### 关于硬链接的限制
    以下内容摘自:http://blog.sina.com.cn/s/blog_65fdcaa40101f11t.html

    linux系统中的硬连接有两个限制:不能跨越文件系统和不允许普通用户对目录作硬连接。至于第一个限制,很好理解,而第二个就不那么好理解 了。 对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接,这些都说明了系统限制对目录进行硬连接只是一个硬性规定,并不是逻辑上不允许或技术上的不可行。那么操作系统为什么要进 行限制呢?答案可能有两个。

      先来说第一个,如果引入了对目录的硬连接就有可能在目录中引入循环,那么在目录遍历的时候系统就会陷入无限循环当中。也许您会说,符号连接不也可以引入循 环吗,那么为什么不限制目录的符号连接呢?原因就在于在linux系统中,每个文件(目录也是文件)都对应着一个inode结构,其中inode数据结构 中包含了文件类型(目录,普通文件,符号连接文件等等)的信息,也就是说操作系统在遍历目录时可以判断出符号连接,既然可以判断出符号连接当然就可以采取 一些措施来防范进入过大的循环了,系统在连续遇到8个符号连接后就停止遍历,这就是为什么对目录符号连接不会进入死循环的原因了。但是对于硬连接,由于操 作系统中采用的数据结构和算法限制,目前是不能防范这种死循环的。

      在说明第二个原因之前,先来看看文件的dentry结构在系统空间中长什么样子和它们是怎么存放在系统空间的。dentry结构主要包含了文件名,文件的inode号,指向父目录dentry结构的指针和其他一些与本次讨论无关的指针,这里关键是那个指向父目录的指针;系统中所有的dentry结构都 是按杂凑值存放在杂凑表中的,这里的杂凑算法很重要,它是取文件名和文件的父目录dentry结构的地址一起杂凑运算出杂凑值的。现在假设有两个目录 /a和/b,其中/b是我们通过ln -d命令建立起来的对/a的硬连接。这个时候内核空间中就会存在一个/a的dentry结构和一个/b的dentry结构,由上面的知识可知,/a和/b 目录下面的每一个文件或目录都各自有对应的dentry结构(因为虽然/a目录下面的文件名没有改变,但是因为dentry结构有指向父目录dentry 的指针和计算杂凑值时考虑了父目录dentry结构的地址,这个时候dentry结构就分身乏术了),而且这种继承还会影响到所有子目录下面的文件,这样 下来就会浪费很多系统空间了,特别是如果被硬连接的目录中存在大量文件和子目录的时候就更加明显了。这也许是第二个原因。

    ## 软连接
    软连接又叫做符号链接,它类似于windows系统的快捷方式。与硬链接不同的是,它没有引用计数,并且它拥有自己的inode。也就是说,软连接文件的inode与源文件不同。
    如何实现链接的呢?我们可以理解为,软连接文件也是一个文本文件,不过它里面包含了源文件的位置信息。如下图:
    这里写图片描述

    我们可以用ln指令的-s选项创建一个文件的软连接。

    这里写图片描述

    展开全文
  • linux硬链接与软连接的区别

    千次阅读 2011-12-13 23:30:01
    Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为链接又称符号链接(Symbolic Link)。 一、硬链接   硬连接指通过索引节点来进行连接。所以硬链接与源文件共用一个索引节点对象,不共用file对象,...
     
    

       Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接又称符号链接(Symbolic Link)。

    一、硬链接

       硬连接指通过索引节点来进行连接。所以硬链接与源文件共用一个索引节点对象,不共用file对象,不共用dentry对象

       在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。

       硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

    命令:

    [RHEL@Linux]$ ln file1 file2          #创建file1的一个硬连接文件file2


    二、软连接

       软链接又称符号链接(Symbolic Link)。

       软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息

    命令:

    [RHEL@Linux]$ ln -s file1 file3       #创建file1的一个符号连接文件file3
    

    通过测试可知:

    (1) 删除原文件file1,对硬链接file2没影响,对软连接file3有影响(无效);

    (2) 删除硬链接file2,对原文件file1,软链接file3没有影响;

    (3) 删除软链接file3,对原文件file1,硬链接file2都没有影响;

    (4) 同事删除原文件file1、硬链接file2,文件被真正的删除。


     

    展开全文
  • 本篇文章详细介绍了linux软连接硬链接,废话不多说,接着往下看把。 一 链接文件 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 ...
  • linux硬链接与软链接的联系区别

    万次阅读 多人点赞 2018-03-24 20:25:09
    我们知道文件都有文件名数据,这在 Linux 上被分成两个部分:用户数据 (user data) 元数据 (metadata)。 用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方; 元数据则是文件的附加属性,...
  • 概述 linux系统中有一种比较特殊的文件称之为链接...链接和硬链接不同,首先链接可以跨越文件系统,其次,链接文件和源文件有着不同的inode和dentry,因此,两个文件的属性和内容也截然不同,链接文件的文件内
  • 本文主要讲了一下关于Linux软连接硬链接,希望对你的学习有所帮助。
  • 硬链接软连接的特点

    千次阅读 2020-02-11 10:03:58
    硬链接是有着相同的inode 号仅对文件名不同的文件,因此 硬链接存在以下几点的特性: (1 )文件有相同的indoe 及文data ...软连接与硬链接不同,若文件用户数据块存放的内容是另一文件的路径名的指向,则改文件就...
  • Linux 硬链接与软连接

    千次阅读 2015-06-09 10:47:09
    情景说明: 有时候在Linux下我们有一个大的工程跟绝对路径相关,现在又想通过eclipse查看源码和修改源码,那么问题来了: 1.如果我们把源码拷贝一份到eclipse工程里面,那么此时修改了某个...解决办法:创建软连接
  • 硬链接与软链接的联系区别

    千次阅读 2018-08-31 23:55:26
    Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分...
  • 硬链接软连接

    2021-03-06 04:05:44
    1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在...
  • 首先我们需要了解Linux下硬链接以及软连接的基本概念.硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用. 软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个...
  • Linux软连接硬链接

    2021-01-09 17:31:13
     Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。  【硬连接】  硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在...
  • 首先我们需要了解linux 下硬链接以及软连接的基本概念.  硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.  软链接:也称为符号链接,新建的文件以“ 路径” 的形式来...
  • 一、什么是硬链接软连接 1、软连接:可以理解成创建一个快捷方式,这点和 Windows系统中的桌面图标,道理是一样的。 2、硬链接:等同于 cp -p ,但是还会同步更新,可以理解成起别名。 二、语法结构 1、软连接:ln...
  • Linux中的链接命令笔记(硬链接软连接) 文件处理命令:ln 英文原意:link 所在目录:/bin/ln 可执行用户:所有用户 语法: ln 【-s】 【源文件】 【目标文件】 若加上 - s选项则是创建软链接,不加是创建硬链接 ...
  • Centos 软连接硬链接

    千次阅读 2021-11-18 17:52:24
    解释:linux的链接和硬链接删除都不会影响原始文件,但是修改的话都会影响原始文件。linux的链接相当于windows里的快捷方式,快捷方式删了就删了,原来文件还是存在的。linux的硬链接的特点就是,链接文件和原始...
  • 如果需要在系统中维护同一个文件的两个或多个副本,不需要使用两个或多个物理...硬链接创建一个单独的文件,其中包括有关源文件的信息和位置。引用该硬链接文件的效果跟引用源文件一样: 1、创建硬链接的方式 方...
  • Linux 软连接与硬链接
  • Linux 硬链接与软链接

    2021-01-09 16:34:08
     Linux 中有两种链接:硬链接(Hard Link)和链接(Soft Link),链接也称为符号链接(Symbolic Link)。  硬链接  硬链接其实已存在文件的另一个名字,链接原来的文件并没有什么区别
  • 硬链接与软链接

    2017-06-17 22:39:58
    hard link(硬链接或实际连接): 1、通过文件系统的inode连接来产生新文件名,而不是产生新文件; 2、每个文件都会占用一个inode,文件内容由inode的记录来指向; 3、硬连接只是在某个目录下新建一条文件名连接到某个...
  • 在linux系统中,链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接或链接(Symbolic Link)。 硬链接与软链接是 Linux 文件系统中的...通过剖析硬链接与软链接的联系区别,我们可更好的了解 L...
  • 软连接硬链接的区别

    千次阅读 2019-10-14 14:46:36
    Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的...
  • 硬链接文件:源文件共用一个inode结点,类似于源文件的别名,其实源文件没有什么不同。 区别:删除源文件,链接文件失效,硬链接文件无影响(链接数-1);链接可以对目录创建,硬链接不可以;链接可以跨...
  • 首先我们需要了解linux下硬链接以及软连接的基本概念. 硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用. 软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,384
精华内容 16,553
关键字:

硬链接与软连接