目录
- 软连接
- 创建一个软连接
- 删除软连接
- 硬链接
- 创建硬链接
- 删除硬链接
- 硬链接和软连接之间的区别
软连接
创建一个软连接
-
ln -s [源文件或目录] [软连接名称]
-
例子: 在/home目录下创建一个软连接linkToRoot 链接到/root目录
删除软连接
- rm -f /linkToRoot
- 例子:删除上面创建的软连接
硬链接
创建硬链接
- ln source target
- 例子 创建一个b.txt文件的硬链接
删除硬链接
- rm -rf 硬链接名称
- 例子:删除上面创建的硬链接
硬链接和软连接之间的区别
-
我们仔细观察一下发现,b_hd,b.txt拥有一样的i结点(显示结果的第一列,即50726456),甚至于连权限属性都一模一样。而b_soft拥有另外一个独立的i结点。我们在前面曾经说过,每一个i结点对应一个实际的文件。所以,我们可以发现,建立的硬链接实际上跟我们的源文件是一样的。而软链接则是重新建立了一个独立的文件。
-
事实上,硬链接的本质就是一条文件名和i结点的关联记录而已。
-
另外,我们观察一下这几个文件的大小,由于我们的源文件是写了一点东西的文件,所以大小是1。那为什么两个硬链接也是1?而软链接却是5呢?
-
因为硬链接关联着我们的源文件,所以源文件的大小是多大,它们就是多大。至于软链接的大小为什么是5,这个就比较有趣了,大家观察一下软链接指向的源文件名(“b.txt”)的长度,是不是5?对了,我们的软链接会写上链接文件的文件名。一个字母一个字节,所以是5个字节,所以软链接的大小是5。
-
当我们删除了源文件之后,发现硬链接还能正常显示原本的内容,而软链接则提示文件不存在,这是怎么回事?
-
我们刚才说过,软链接是建立了另一个新的独立的文件,它指向源文件,因为源文件没了,所以它就不能正常指向了;而硬链接为什么依旧能显示原来的内容呢?回到我们一开始的解释,硬链接实际是一条文件名与i结点的记录。所以,在删除源文件的时候,系统则将链接数减1,当链接数为0的时候,inode就会被系统回收,文件的内容才会被删除。我们试一试。