美文网首页
Linux 系统中的硬链接和软链接

Linux 系统中的硬链接和软链接

作者: Manchangdx | 来源:发表于2018-07-18 14:04 被阅读0次

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

Linux 系统中一切皆文件(目录也是文件),每个磁盘里面就是一个完整的文件系统。文件系统可以分为两部分:数据区(data block)和节点区(inode block)。数据区就是存放文件数据的区域,节点区是存放目录结构、文件位置等信息的区域。当我们访问文件,首先读取文件的节点 inode。节点里面存储了文件的很多重要信息:文件的唯一标识 Inumber(也叫 inode 号或节点号)、创建时间、文件大小、所属用户、读写权限、文件数据在数据区的位置等。
多个文件可以对应同一个节点 inode,但每个文件都有唯一的标识 Inumber,也就是说 Inumber 才是文件的唯一标识,而文件名则不是。
读取文件的流程:目录节点 → 目录数据 → 文件节点 → 文件数据

1、用 ln 命令创建硬链接:

    shiyanlou:Code/ $ echo 'hello world' > a  
    shiyanlou:Code/ $ echo 'hello shiyanlou' > b
    shiyanlou:Code/ $ ls -il
    总用量 8
    165197 -rw-rw-r-- 1 shiyanlou shiyanlou 12  7月 18 12:19 a
    165203 -rw-rw-r-- 1 shiyanlou shiyanlou 16  7月 18 12:19 b
    shiyanlou:Code/ $ ln a ahard
    shiyanlou:Code/ $ ls -il
    总用量 12
    165197 -rw-rw-r-- 2 shiyanlou shiyanlou 12  7月 18 12:19 a
    165197 -rw-rw-r-- 2 shiyanlou shiyanlou 12  7月 18 12:19 ahard
    165203 -rw-rw-r-- 1 shiyanlou shiyanlou 16  7月 18 12:19 b

ahard 就是 a 的硬链接,创建硬链接后,文件的链接数都从 1 变成了 2
除了文件名不同,aharda 的所有信息都一样,包括前面的 inode 号和文件大小
其实,ahard 就是一个指针,它和 a 指向相同的文件节点
硬链接可以任意移动,把 aahard 文件移动到其它目录,是没有问题的
注意:不能对目录创建硬链接,不可以在不同文件系统的文件间建立硬链接

2、用 ln -s 命令创建软链接:

    shiyanlou:Code/ $ ln -s b bsoft
    shiyanlou:Code/ $ ls -il
    总用量 12
    165197 -rw-rw-r-- 2 shiyanlou shiyanlou 12  7月 18 12:19 a
    165197 -rw-rw-r-- 2 shiyanlou shiyanlou 12  7月 18 12:19 ahard
    165203 -rw-rw-r-- 1 shiyanlou shiyanlou 16  7月 18 12:19 b
    165205 lrwxrwxrwx 1 shiyanlou shiyanlou  1  7月 18 13:34 bsoft -> b

可以看到,bbsoft 是不同的两个文件,文件节点号不同,大小也不同
访问软链接文件 bsoft 时,系统会识别链接指向的文件 b 并读取

3、软硬链接的一些不同:

硬链接文件就是一个指针文件,软链接文件是新建文件
硬链接只能出现在文件系统内,可以在文件系统内随意移动
软链接可以跨文件系统创建,不能动,动了就找不到了

  • 原文件 → 原文件节点 → 原文件数据区
  • 硬链接文件 → 原文件节点 → 原文件数据区
  • 软链接 → 自己的节点 → 自己的文件数据区 → 文件


    硬连接 & 软链接

相关文章

  • ln 命令

    要学习 ln命令之前先要了解linux中软链接和硬链接的概念 linux中软链接和硬链接的概念 在Unix系统中链...

  • 简谈linux中软链接和硬链接的区别

    linux中软链接和硬链接的区别: 在linux系统中,链接分为2种:一种被称为硬链接(Hard Link),另一...

  • 索引 - Linux / Ubuntu

    文集主页 Ubuntu 系统中的用户与用户组Linux 系统中的硬链接和软链接Linux 文件查找之术Linux ...

  • Linux 系统中的硬链接和软链接

    现代操作系统为解决信息能独立于进程之外被长期存储的问题引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使...

  • Linux软链接与硬链接

    在linux系统中,硬链接(hard link)和软链接(symbolic link)是两个非常重要的概念,而很多...

  • ln -s 软链接

    linux 创建连接命令 ln -s 软链接linux-ln -s(链接)、mount(挂载 软连接和硬连接 硬链...

  • Linux之旅——链接

    在linux中链接分为硬链接和软链接两中类型,链接得作用类似Windows中得快捷方式。 linux得两种链接类型...

  • Linux - 硬链接和软链接

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

  • 硬链接与软链接

    Linux文件的链接可以分为硬链接和软链接(符号链接)。硬链接可以认为是一个指向文件数据的指针,就像Python中...

  • Linux 的软链接和硬链接

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

网友评论

      本文标题:Linux 系统中的硬链接和软链接

      本文链接:https://www.haomeiwen.com/subject/riuopftx.html