Linux中的软链接和硬链接
Linux中软链接和硬链接是什么?
符号或者软链接是原始文件的实际链接,而硬链接是原始文件的镜像副本。
如果删除原始文件,软链接没有值,因为它指向不存在的文件。
但在硬链接的情况下,它完全相反。
即使删除原始文件,硬链接仍然具有原始文件的数据。
因为硬链接充当原始文件的镜像副本。
一个软链接
- 可以越过文件系统,
- 允许我们在目录之间链接,
- 具有不同的inode编号和文件权限,而不是原始文件,
- 权限不会更新,
- 只有原始文件的路径,而不是内容。
一个硬链接
- 不能跨越文件系统边界(即,硬链接只能在同一文件系统上工作),
- 无法链接目录,
- 具有与原始文件相同的inode号和权限,
- 如果我们更改源文件的权限,则将更新权限,
- 具有原始文件的实际内容,使我们仍然可以查看内容,即使原始文件移动或者删除。
创建软链接或者符号链接
让我们创建一个名为"test"的空目录。
$mkdir test
更改为"test"目录:
$cd test
现在,创建一个名为source.file的新文件,其中一些数据如下所示。
$echo "Welcome to theitroad" >source.file
让我们查看source.file的数据。
$cat source.file Welcome to theitroad
现在,创建到source.file的符号或者软链接。
为此,运行:
$ln -s source.file softlink.file
让我们比较source.file和softlink.file的数据。
$cat source.file Welcome to theitroad
$cat softlink.file Welcome to theitroad
如上所述,SoftLink.file显示与source.file的数据相同。
让我们查看softlink.file和source.file的inode和权限。
$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
正如我们在上面的屏幕截图中看到的那样,inode号码(11665731 vs 11665692)和文件权限(lrwxrwxrwx vs -rw-r - r--)也不同,即使softlink.file有相同的内容作为source.file,。
因此,证明软链接不共享与原始文件相同的inode号码和权限。
现在,删除原始文件(i.e source.file)并查看会发生什么。
$rm source.file
使用命令检查softlink.file的内容:
$cat softlink.file
示例输出:
cat: softlink.file: No such file or directory
如上所述,在删除原始文件(i.e source.file)之后,没有称为softlink.file这样的文件或者目录。
因此,现在我们了解软链接只是指向原始文件的链接。
SoftLink就像文件的快捷方式。
如果删除文件,则快捷方式无用。
如我们所知,如果删除软链接,则仍将可用原始文件。
创建硬链接
创建一个名为source.file的文件,其中包含一些内容,如下所示。
$echo "Welcome to theitroad" >source.file
让我们验证文件的内容。
$cat source.file Welcome to theitroad
source.file已创建现在。
现在,让我们创建到Source.file的硬链接,如下所示。
$ln source.file hardlink.file
检查suchlink.file的内容。
$cat hardlink.file Welcome to theitroad
我们看到starlink.file显示与source.file相同的数据。
让我们查看supplink.file和source.file的inode和权限。
$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
现在,我们看到supplink.file和source.file具有相同的inode编号(11665692)和文件权限(-rw-r - r--)。
因此,证明硬链接文件共享与原始文件相同的inode号码和权限。
注意:如果我们更改Source.file的权限,则同样的权限也将应用于suchplink.file。
现在,删除原始文件(i.e source.file)并查看会发生什么。
$rm source.file
检查硬链接的内容。
使用命令:
$cat hardlink.file
如上所述,即使我删除了源文件,我也可以查看stronkink.file的内容。
因此,证明硬链接共享相同的inode号码,原始文件的权限和数据。
那么,硬链接和正常复制文件之间有什么区别?
我们可能想知道为什么我们可以轻松复制/粘贴原始文件的同时创建硬链接?
创建文件的硬链接与复制它不同。
如果复制文件,它将重复内容。
因此,如果修改一个文件的内容(原始或者硬链接),则它对另一个文件没有影响。
但是,如果我们创建到文件的硬链接并更改任何一个文件的内容,则两者都将看到更改。
让我们看看source.file。
$cat source.file Welcome to theitroad
源文件有一个单行,称欢迎oniTorad。
追加一条新行,例如"欢迎来到Linux"源.File或者starlink.file。
$echo "Welcome to Linux" >>source.file
现在检查两个文件的内容。
$cat hardlink.file Welcome to theitroad Welcome to Linux
$cat source.file Welcome to theitroad Welcome to Linux
我们刚刚在Source.file上制作的更改在两个文件中更新。
意味着文件(源和硬链接)同步。
无论我们在任何文件中所做的任何更改都将反映在其他文件中。
如果通常复制/粘贴文件,则不会看到其他文件中的任何新更改。