如何在Linux中创建硬(符号)链接

时间:2020-02-23 14:38:24  来源:igfitidea点击:

如何在Linux中创建符号链接?
在本教程中,我们将了解如何使用硬链接和符号的多个文件名引用相同的文件,也称为"软"链接。
创建指向Linux中同一文件的多个常见方法是:将软链接(符号链接)创建到文件到文件的硬链接。

使用软链接(符号链接)

软链接是一种特殊类型的文件,指向现有文件或者目录。
它可用于将两个文件链接到不同的文件系统上。
软链接也可以指向特殊文件。

LN -S命令用于创建软链路。
让我们考虑一个例子:

在以下示例中,LN -S命令用于为现有文件/tmp/file1.txt创建一个新的软链接,它将被命名为/tmp/file2.txt:

$echo "Hello from file1" > /tmp/file1.txt
$ln -s /tmp/file1.txt /tmp/file2.txt

列出文件确认:

$ls -l /tmp/file1.txt /tmp/file2.txt
-rw-------. 1 jkmutai jkmutai 17 Nov  4 22:37 /tmp/file1.txt
lrwxrwxrwx. 1 jkmutai jkmutai 14 Nov  4 22:38 /tmp/file2.txt -> /tmp/file1.txt

我们可以看到/tmp/file2.txt的长列表的第一个字符是l而不是 - 。
这表示该文件是软链接而不是常规文件。
(a d会表示文件是目录。
)

检查符号链接文件的内容。

$cat /tmp/file2.txt
Hello from file1

对于目录,使用:

ln -s /dir /dir2

如果删除原始常规文件,软链接仍将指向缺少文件 - "悬挂软链接"。

使用硬链接

Linux中的每个文件都以单个硬链接开始。
通过创建到文件的新硬链接,我们正在创建指向相同数据的另一个名称。

新的硬链接与原始文件名完全相同。
很难讲述新硬链接和文件的原始名称之间的差异。
我们使用ln命令创建硬链接 - 指向现有文件的另一个名称。

$echo "Hello World from Hard Link" >/tmp/hello1.txt
$ln /tmp/hello1.txt  /tmp/hello2.txt

其中:/tmp/hello1.txt是现有文件/tmp/hello2.txt的路径是我们要创建的硬链接。

使用LS -I选项LS列出文件的inode号码。
如果inode号码相同,则文件是指向相同数据的硬链接。

$ls -li /tmp/hello1.txt  /tmp/hello2.txt
2591191 -rw-------. 2 jkmutai jkmutai 27 Nov  5 08:16 /tmp/hello1.txt
2591191 -rw-------. 2 jkmutai jkmutai 27 Nov  5 08:16 /tmp/hello2.txt
--- Let's add third file and recheck --
$ln /tmp/hello1.txt  /tmp/hello3.txt 
$ls -li /tmp/hello1.txt  /tmp/hello2.txt /tmp/hello3.txt 
2591191 -rw-------. 3 jkmutai jkmutai 27 Nov  5 08:16 /tmp/hello1.txt
2591191 -rw-------. 3 jkmutai jkmutai 27 Nov  5 08:16 /tmp/hello2.txt
2591191 -rw-------. 3 jkmutai jkmutai 27 Nov  5 08:16 /tmp/hello3.txt

引用相同文件的所有硬链接都具有相同的:链接CountAccess Permissuser和Group IssipsionsStime StumpsFile内容

与软链接的那些比较:

$ls -li /tmp/file1.txt /tmp/file2.txt /tmp/file3.txt
2442008 -rw-------. 1 jkmutai jkmutai 17 Nov  4 22:37 /tmp/file1.txt
2442949 lrwxrwxrwx. 1 jkmutai jkmutai 14 Nov  4 22:38 /tmp/file2.txt -> /tmp/file1.txt
2601927 lrwxrwxrwx. 1 jkmutai jkmutai 14 Nov  5 08:24 /tmp/file3.txt -> /tmp/file1.txt

软链接与硬链接之间的关键差异

硬链接指向存储Devicea软链接上的数据的名称向另一个名称指向另一个名称,该名称指向存储设备上的数据