在Windows 系统中,快捷方式就是指向原始文件的一个链接文件,可以让用户从不同的位置来访问原始的文件;原文件一旦被删除或剪切到其他地方后,会导致链接文件失效。但是,这个看似简单的东西在Linux 系统中可不太一样。在Linux 系统中存在硬链接和软连接两种文件。
硬链接(hard link):可以将它理解为一个指向原始文件inode 的指针
,系统不为它分配独立的inode 和文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode 连接数就会增加1;而且只有当该文件的inode 连接数为0 时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode 的指针
,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链接。
**软链接(也称为符号链接[symbolic link]):**仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统(不同分区)
进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows 系统中的快捷方式
具有一样的性质。
ln 命令
ln 命令
用于创建链接文件,格式为ln [选项] 目标
,其可用的参数以及作用如下表所示。在使用ln 命令
时,是否添加-s 参数
,将创建出性质不同的两种快捷方式
。
| 参数 | 作用 |
| --- | --- |
| -s | 创建符号链接
(如果不带-s 参数,则默认创建硬链接)|
| -f | 强制创建文件或目录的链接 |
| -i | 覆盖前先询问 |
| -v | 显示创建链接的过程 |
为了更好地理解软链接、硬链接的不同性质,接下来创建一个类似于Windows 系统中快捷方式的软链接。这样,当原始文件被删除后,就无法读取新建的链接文件了。
[root@lynchj ~]# echo "Welcome to linuxprobe.com" > readme.txt
[root@lynchj ~]# ln -s readme.txt readit.txt
[root@lynchj ~]# cat readme.txt
Welcome to linuxprobe.com
[root@lynchj ~]# cat readit.txt
Welcome to linuxprobe.com
[root@lynchj ~]# ls -l readme.txt
-rw-r--r-- 1 root root 26 Jan 11 00:08 readme.txt
[root@lynchj ~]# rm -f readme.txt
[root@lynchj ~]# cat readit.txt
cat: readit.txt: No such file or directory
接下来针对一个原始文件创建一个硬链接,即相当于针对原始文件的硬盘存储位置创建了一个指针,这样一来,新创建的这个硬链接就不再依赖于原始文件的名称等信息,也不会因为原始文件的删除而导致无法读取。同时可以看到创建硬链接后,原始文件的硬盘链接数量增加到了2。
[root@lynchj ~]# echo "Welcome to linuxprobe.com" > readme.txt
[root@lynchj ~]# ln readme.txt readit.txt
[root@lynchj ~]# cat readme.txt
Welcome to linuxprobe.com
[root@lynchj ~]# cat readit.txt
Welcome to linuxprobe.com
[root@lynchj ~]# ls -l readme.txt
-rw-r--r-- 2 root root 26 Jan 11 00:13 readme.txt
[root@lynchj ~]# rm -f readme.txt
[root@lynchj ~]# cat readit.txt
Welcome to linuxprobe.com
文章评论