创建硬链接和软链接
Contents
1. 概述
在 Linux 机器上,我们可以创建指向现有文件的链接。**Unix 中的链接可以被认为是一个指针或对文件的引用。**换句话说,它们更像是访问文件的快捷方式。我们可以根据需要创建任意数量的链接。
在本教程中,我们将快速探索两种类型的链接:硬链接和软链接。我们将进一步讨论它们之间的区别。
2. 硬链接
任何基于 Unix 的操作系统中的文件都由数据块和 inode组成。数据块存储实际的文件内容。另一方面,inode存储文件属性(文件名除外)和磁盘块位置。
**硬链接只是指向与原始文件相同的底层inode 的另一个文件。**因此,它引用相同的物理文件位置。
我们可以使用ln命令创建硬链接:
ls -l
-rw-rw-r-- 2 runner3 ubuntu 0 Sep 29 11:22 originalFile
ln originalFile sampleHardLink
ls -l
-rw-rw-r-- 2 runner3 ubuntu 0 Sep 29 11:22 originalFile
-rw-rw-r-- 2 runner3 ubuntu 0 Sep 29 11:22 sampleHardLink
让我们快速查看它们映射的inode编号:
ls -i
2835126 originalFile
2835126 sampleHardLink
这两个文件都指向同一个inode。有了这个,即使我们以后删除了原始文件,我们仍然可以使用创建的硬链接访问它的内容。
但是,请注意**我们无法为目录创建硬链接。**此外,硬链接不能跨越文件系统边界,例如网络映射磁盘之间。
3. 软链接
**软链接或软链接是一个新文件,它只存储原始文件的路径而不是其内容。**如果原始文件被移动或删除,则软链接将不起作用。
现在让我们创建一个软链接:
ln -s originalFile sampleSoftLink
ls -l
-rw-rw-r-- 1 runner1 ubuntu 0 Sep 29 12:16 originalFile
lrwxrwxrwx 1 runner1 ubuntu 12 Sep 29 12:16 sampleSoftLink -> originalFile
与硬链接不同,软链接是与原始文件具有不同inode编号的文件:
ls -i
2835126 originalFile
2835217 sampleSoftLink
我们被允许为一个目录创建一个软链接。此外,通过软链接,我们可以跨各种文件系统链接文件。
4. 差异
现在我们了解了什么是软链接或硬链接,让我们快速总结一下主要区别:
- 硬链接具有与原始文件相同的inode编号,因此可以将其视为其副本。另一方面,软链接是一个新文件,它只存储原始文件的文件位置
- 如果原始文件被移动或删除,我们仍然可以使用其任何硬链接访问其内容。但是,该文件的所有软链接都将失效
- 与硬链接不同,我们可以为目录创建软链接。软链接也可以跨越文件系统