内容
Linux中的软链接和硬链接是什么?
一个 象征性的 或者 软链接 是原始文件的实际链接,而 硬链接 是原始文件的镜像副本。 如果删除原始文件,软链接没有价值,因为它指向一个不存在的文件。
但在硬链接的情况下,则完全相反。 即使你删除了原始文件,硬链接仍然有原始文件的数据。 因为硬链接充当原始文件的镜像副本。
简而言之,软链接
- 可以跨文件系统,
- 允许您在目录之间链接,
- 与原始文件具有不同的 inode 编号和文件权限,
- 权限不会更新,
- 只有原始文件的路径,没有内容。
硬链接
- 不能跨越文件系统边界(即硬链接只能在同一个文件系统上工作),
- 无法链接目录,
- 具有与原始文件相同的 inode 编号和权限,
- 如果我们更改源文件的权限,权限将被更新,
- 具有原始文件的实际内容,因此即使原始文件被移动或删除,您仍然可以查看内容。
还是不明白? 好吧,请允许我向您展示一些实际的例子。
如何创建软链接或符号链接
让我们创建一个名为 "test"
.
$ mkdir test
更改为 "test"
目录:
$ cd test
现在,创建一个名为 source.file
一些数据如下所示。
$ echo "Welcome to OSTechNix" >source.file
让我们查看 source.file 的数据。
$ cat source.file Welcome to OSTechNix
那么, source.file
已经被创造了。
现在,创建一个符号或软链接到 source.file
.
为此,请运行:
$ ln -s source.file softlink.file
让我们比较一下两者的数据 source.file
和 softlink.file
.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
正如您在上面的输出中看到的, softlink.file
显示相同的数据 source.file
.
让我们检查一下inode和权限 softlink.file
和 source.file
.
$ ls -lia
样本输出:
total 12 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file 11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
正如我们在上面的屏幕截图中看到的, 索引节点号(11665731
对比 11665692
) 和 文件权限(lrwxrwxrwx
对比 -rw-r--r--
) 是 不同的,即使 softlink.file
具有相同的内容 source.file
. 因此,证明软链接不共享原始文件的相同inode号和权限。
现在,删除原始文件(即 source.file
) 看看会发生什么。
$ rm source.file
检查内容 softlink.file
使用命令:
$ cat softlink.file
样本输出:
cat: softlink.file: No such file or directory
正如您在上面看到的,没有这样的文件或目录称为 softlink.file
在我们删除原始文件后(即 source.file
)。
所以,现在我们明白软链接只是指向原始文件的链接。 软链接就像文件的快捷方式。 如果您删除该文件,该快捷方式将毫无用处。
如您所知,如果您删除软链接,原始文件仍然可用。
建议阅读:
- 如何在 Linux 上列出符号链接
- 如何在 Linux 上查找损坏的符号链接并删除它们
如何创建硬链接
创建一个名为 source.file
部分内容如下图。
$ echo "Welcome to OSTechNix" >source.file
让我们验证文件的内容。
$ cat source.file Welcome to OSTechNix
这 source.file
现在已经创建。
现在,让我们创建指向 source.file
如下所示。
$ ln source.file hardlink.file
检查内容 hardlink.file
:
$ cat hardlink.file Welcome to OSTechNix
你看到 hardlink.file
显示与 source.file 相同的数据。
让我们检查一下inode和权限 hardlink.file
和 source.file
.
$ ls -lia
样本输出:
total 16 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file
现在,我们看到两者 hardlink.file
和 source.file
有相同的 索引节点数 (11665692
) 和 文件权限(-rw-r--r--
). 因此,证明硬链接文件与原始文件共享相同的 inode 数量和权限。
当心: 如果我们更改权限 source.file
, 相同的权限将应用于 hardlink.file
也是。
现在,删除原始文件(即 source.file
) 看看会发生什么。
$ rm source.file
检查内容 hardlink.file
使用命令:
$ cat hardlink.file
样本输出:
如您所见,即使我删除了源文件,我也可以查看 hardlink.file
. 由此证明,硬链接共享相同的inode号、原始文件的权限和数据。
那么,硬链接和普通复制文件有什么区别呢?
您可能想知道为什么我们要创建硬链接,而我们可以轻松复制/粘贴原始文件? 创建文件的硬链接与复制文件不同。
如果您复制文件,它只会复制内容。 因此,如果您修改一个文件的内容(原始文件或硬链接),对另一个文件没有影响。
但是,如果您创建指向文件的硬链接并更改其中一个文件的内容,则更改将在两个文件中都可见。
让我们看一下source.file。
$ cat source.file Welcome to OSTechNix
源文件有一行写着 – 欢迎来到 OSTechNix。
添加一个新行,例如“Welcome to Linux” source.file
或者 hardlink.file
.
$ echo "Welcome to Linux" >>source.file
现在检查两个文件的内容。
$ cat hardlink.file Welcome to OSTechNix Welcome to Linux
$ cat source.file Welcome to OSTechNix Welcome to Linux
看? 我们刚刚做出的改变 source.file
在两个文件中都进行了更新。 含义 – 两个文件(源和硬链接)同步。
您在任何文件中所做的任何更改都将反映在另一个文件中。 如果您通常复制/粘贴文件,您将不会在其他文件中看到任何新更改。
有关更多详细信息,请查看手册页。
$ man ln
结论
在本指南中,我们讨论了 Linux 中的软链接和硬链接,如何通过示例命令创建软链接和硬链接,最后我们解释了硬链接和普通复制文件之间的区别。
希望您对如何在 Linux 中使用符号链接或软链接和硬链接有一个基本的了解。
BASHCLI 命令行硬链接LinuxLinux 基础Linux 命令Linux 方法Linux 提示ln 命令软链接符号链接UnixUnix 基础