Linux:硬链接和软链接

文摘   2024-09-28 07:30   内蒙古  

当在Linux系统中处理文件时,你会经常遇到硬链接和软链接这两个概念。

硬链接(Hard Links):

  1. 「概念」

  • 硬链接是指多个文件名指向同一个索引节点(inode),即一个文件的不同文件名。

  • 硬链接与原文件没有区别,它们共享相同的 inode 和数据块。

  • 「特点」

    • 删除原文件并不会影响硬链接,因为它们实际上是同一个文件的不同名字。

    • 硬链接只能指向同一文件系统内的文件。

  • 「示例代码」

    • 创建硬链接:

      # 创建一个名为file1的文件
      echo "Hello, this is file1" > file1

      # 创建硬链接file2指向file1
      ln file1 file2
    • 查看硬链接的 inode 号:

      ls -i file1 file2

    软链接(Symbolic Links):

    1. 「概念」

    • 软链接是一个特殊的文件,它包含指向另一个文件的路径。

    • 软链接类似于Windows系统中的快捷方式。

  • 「特点」

    • 删除原文件会导致软链接失效,因为它仅仅是指向原文件的路径。

    • 软链接可以跨越文件系统边界。

  • 「示例代码」

    • 创建软链接:

      # 创建一个软链接指向file1
      ln -s file1 symlink1
    • 查看软链接的指向:

      ls -l symlink1

    区别

    硬链接和软链接在Linux系统中有一些重要区别,包括以下几点:

    1. 「硬链接」

    • 硬链接是文件系统级别的链接,它们与原始文件共享相同的inode和数据块。

    • 删除原始文件并不会影响硬链接,因为它们实际上是同一个文件的不同名字。

    • 硬链接只能指向同一文件系统内的文件。

    • 硬链接不能指向目录。

    • 硬链接不能跨越文件系统边界。

  • 「软链接」

    • 软链接是一个特殊的文件,它包含指向另一个文件的路径。

    • 软链接本身是一个文件,它有自己的inode和数据块,而指向的文件有其自己的inode和数据块。

    • 删除原始文件会使软链接失效,因为它只是指向原始文件的路径。

    • 软链接可以跨越文件系统边界。

    • 软链接可以指向目录。

    区分硬链接和软链接:

    1. 「查看链接类型」

    • 使用 ls -l 命令查看文件列表时,硬链接的链接计数会显示在文件列表的第二列,而软链接会有 -> 标记指示它是一个符号链接。

  • 「删除原文件后的影响」

    • 如果删除了原文件,硬链接仍然可以访问文件内容,而软链接将失效。

  • 「文件系统边界」

    • 硬链接只能在同一文件系统内创建,而软链接可以跨越文件系统边界。

    何时使用硬链接和软链接:

    • 「硬链接」适用于需要多个文件名指向同一份数据的情况,如共享文件、备份等。

    • 「软链接」适用于创建指向其他文件或目录的快捷方式,如在不同目录中引用同一文件、跨文件系统引用文件等。


    兄弟嵌入式
    从入门到精通,学习并分享嵌入式软、硬件的知识。
     最新文章