M20 – 1- 第二周(2):硬链接与软链接的区别

在讲硬链接与软链接的区别之前,我们首先了解inode,了解inode让我们更容易理解何为硬链接和软链接。

inode概念

       何为inode,inode就是索引节点,而inode表中存放着文件的元数据,何为元数据,元数据就是文件名称、大小、时间戳、所有者、权限、inode等信息,而文件中的内容就是文件的数据,因此文件是由元数据(metadata)和数据(data)组成。Inode到底有什么用呢,请看下图:

1.png

我们在查找文件时,是以文件名称来查找,但是系统无法识别文件名称,而是以inode号来查找文件的位置,因此 inode 号才是文件的唯一标识而非文件名文件名仅是为了方便人们的记忆和使用,系统或程序都是通过 文件的inode 号查找到的文件数据块。

硬链接概念

接下来了解一下何为硬链接和软链接,硬链接:就是一个文件可以有一个或多个文件名。请看下图:

2.png

是否看了图2觉得对硬链接更容易理解了,硬链接其实就是有很多个文件名不一样,但是元数据都是一样的,都是指向同一个inode,并由inode号指向文件中的内容(数据),当编辑‘filename1’中的元数据或数据时,而filename2与filename3中的元数据与数据也会跟着改变,请看下图:

3.png

硬链接总结:

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

  2. 对应于同一文件系统上一个物理文件

  3. 每个目录引用相同的inode号

  4. 创建时链接数递增

注意:删除硬链接文件时

  1. rm命令递减计数的链接

  2. 文件要存在,至少有一个链接

  3. 当链接数为零时,该文件被删除

  4. 不能跨越驱动器或分区

  5. 语法: ln filename [linkname]

软链接概念

何为软链接,软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。请看下图:

77.png

从上图可以看出,软链接的数据也就是另一个硬链接的路径,其数据是引用硬链接文件的,但是元数据却跟硬链接不一致,请看下图:

9.png

是否已经对软链接已经有一个新的认识了呢。

软链接总结:

  1. 一个符号链接指向另一个文件

  2. ls – l的 显示链接的名称和引用的文件

  3. 一个符号链接的内容是它引用文件的名称

  4. 可以对目录进行

  5. 可以跨分区

  6. 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数

  7. 语法:ln -s filename [linkname]


接下来是重头戏,软链接与硬链接的区别:

  1. 硬链接和原文件没有什么区别,而且共享一个 inode 号,除了名称不一致,其它的数据以及元数据均一致;而软链接不共享 inode,有自己独立的 inode,与原文件的元数据也不一致,但是软链接的数据是引用原文件的数据

  2. 若原文件删除了,则软连接则不可以访问,但是软链接还存在,而硬连接则是可以的,但是硬链接次数递减,而软软件不会更改

  3. 由于符号链接的特性,导致其可以跨越磁盘分区及文件系统,但硬链接不具备这个特性

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

(0)
AleenAleen
上一篇 2016-08-02
下一篇 2016-08-02

相关推荐

  • 自制 mini linux

    思路 先装载一块硬盘,按照上面两个实验的部分结果,创建各个目录 在/boot 里面添加内核 ,添加initramfs.img文件添加grub组件  ,创建grub.conf   然后复制bash  ,ls  ,cp  等,命令和响应的库文件,并在启动的时候指定第一个进程为/bin/bash 顺便加载一个网卡驱…

    2017-05-14
  • X86平台系统启动流程 (Blog 9)

    POST –> BootSeqence(BIOS) –> Bootloader(MBR) –> Kernel(initrd) –> init(/etc/inittab)

    2017-11-27
  • Code Review中的几个提示

    Code Review应该是软件工程最最有价值的一个活动,之前,本站发表过《简单实用的Code Review工具》,那些工具主要是用来帮助更有效地进行这个活动,这里的这篇文章,我们主要想和大家分享一下Code Review代码审查的一些心得。 首先,我们先来看看Code Reivew的用处: Code reviews 中,可以通过大家的建议增进代码的质量。 …

    Linux干货 2015-04-03
  • 运维自动化之系统安装

    自动化安装系统,cobbler的安装使用

    Linux干货 2018-01-15
  • haproxy实战之haproxy实现mysql负载均衡

    haproxy实战之haproxy实现mysql负载均衡 实验目的haproxy + mysql实现负载均衡 1.准备机器,做好时间同步,域名主机名解析 192.168.42.151 [node2 haproxy] 192.168.42.152 [node3 mariadb] 192.168.42.153 [node4 mariadb] 2.node3,no…

    Linux干货 2017-06-29
  • AWK实现求和、平均数、最小值、最大值

    1.简单的按列求和]$ cat test123125126]$ awk ‘{sum += $1}END {print sum}’ test2.对符合某些条件的行,按列求和]$ cat  testaaa 123bbb 125aaa 123aaa 123ccc 126对文件test中 第一列为aaa的行求和]$ awk &#82…

    Linux干货 2017-04-09