如何在Linux中创建硬(符号)链接
如何在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软链接上的数据的名称向另一个名称指向另一个名称,该名称指向存储设备上的数据