Linux 中的链接——Linux 中的硬链接和软链接简介

Linux 中的链接是可用于引用文件或文件夹的指针。 当我们可能需要访问文件系统深处的文件或链接库等时,它们会派上用场! 在本单元中,我们将了解有关 Linux 中的链接的更多信息。

链接类型

Linux 中基本上有两种类型的链接:

  • 硬链接
  • 软链接

两者都有自己的意义,在我们继续阅读时,我们将详细讨论每一个。

什么是硬链接?

Linux 中的硬链接可以被认为是文件名和文件系统中存储的实际数据之间的链接。 创建一个新的硬链接基本上意味着 创建新链接 存储在文件系统中的相同数据。 因此,即使我们有两个不同名称的不同文件,它们也指向相同的数据。

Linux 中的硬链接

此时,您可以删除原始文件,但仍然可以借助硬链接访问其内容,因为它引用了文件系统中的相同数据。

创建和删除硬链接

在 Linux 中创建硬链接的语法是:

$ ln [FILENAME] [LINK NAME] 

例如,让我们创建一个文件的硬链接,如下所示:

$ ln File.txt HardLink.txt 

要验证它们确实是同一个文件,您可以比较它们的 sha1sum 以发现它们确实相同。 要“取消链接”文件,只需删除链接即可。 和 :

$ rm [LINK NAME] 

硬链接与副本

此时您可能会说:“那么硬链接基本上就是原始文件的副本?”

嗯,这是不真实的。 虽然硬链接和文件副本都会为您提供相同的数据,但它们仍然不一样。 硬链接指的是相同 inode 中的数据,而副本将相同的确切数据存储在不同的 inode 中。 为了演示这一点,我们将从前面的示例中获取示例,并创建名为 Copy.txt 的原始文件的副本,然后使用以下命令检查 inode 编号 ls -li

$ ls -li 154 -rw-r--r-- 1 user user 1000 Mar 23 13:19 Copy.txt 153 -rw-r--r-- 2 user user 1000 Mar 23 13:12 File.txt 153 -rw-r--r-- 2 user user 1000 Mar 23 13:12 HardLink.txt 

如您所见,原始文件和硬链接引用相同的 inode 编号 153,而文件副本的 inode 编号为 154。

Linux 中硬链接的限制

硬链接也有一些缺点,例如——你不能(或者更确切地说你不应该)创建目录和特殊文件的硬链接,因为它可能会破坏你的文件系统。 此外,它们不能跨越多个文件系统,并且必须与原始文件驻留在同一个文件系统上。

什么是软链接?

Linux 中的软链接,也称为符号链接,指向特定位置(文件/目录)。 与硬链接不同,它们不指向 inode 数据,而是指向文件本身。

Linux中的软链接

与硬链接不同,删除原始文件会“破坏”软链接。 软链接可以跨文件系统,同时允许您在目录之间进行链接。 软链接也可以具有与原始文件不同的权限。

创建和删除软链接

创建软链接的语法是:

$ ln -s [FILE/DIRECTORY] [LINK NAME] 

例如,让我们创建一个文件的软链接:

$ ln -s File.txt SoftLink.txt 

您也可以创建指向目录的软链接。 创建软链接时,执行 ‘ls -l’ 应该反映这样一个事实:它是一个文件:

$ ls -l -rw-r--r-- 1 user user 1000 Mar 23 17:06 File.txt lrwxrwxrwx 1 user user    8 Mar 23 17:08 SoftLink.txt -> File.txt 

请注意,SoftLink 已预先添加了字母 ‘我’ 这意味着它是一个链接而不是一个文件。 根据您的终端类型,您也可以将文件显示为不同的颜色。

请注意,重命名或删除原始文件会“破坏”仍指向旧文件的符号链接。

$ ls -l -rw-r--r-- 1 user user 1000 Mar 23 17:06 File-Renamed.txt lrwxrwxrwx 1 user user    8 Mar 23 17:08 SoftLink.txt -> File.txt $ file SoftLink.txt  SoftLink.txt: broken symbolic link to File.txt 

要删除软链接,只需使用 R M 命令。 同样,对使用软链接链接的文件所做的任何更改都应反映在主文件上,因为它只是一个指向该文件的指针。

结论

根据情况,这两个链接都可以发挥作用。 链接是 Linux 系统不可或缺的一部分,通常有助于导航和探索文件系统。