硬链接和软连接的区别以及 ln -s 和mv的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬链接和软连接的区别以及 ln -s 和mv的区别相关的知识,希望对你有一定的参考价值。

linux链接分两种,一种是硬链接(hand link) 一种是软链接 (symbolic link)
ln命令是创建链接,默认是创建硬链接
ln -s 是创建软连接

?
?
什么是硬链接
硬链接是通过索引节点来进行连接,在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会分配一个节点编号,或者称之为索引节点。 多个文件名称指向一个节点编号,一般这种连接是硬链接
一个文件有硬链接的时候,想要真正删除。需要吧所有的连接全部删除,文件的数据库和目录的链接才会被释放。
?
?
?

什么是软连接
软连接类似 windows的快捷方式,他实际上是一个特殊文件。当创建软连接之后 软连接会有自己的节点编号。且软连接实际上是一个文本,其中包含源文件的位置信息。
当删除源文件的话。。软连接不会消失 但是会报错。

?
?
??

                                   总结

硬链接:
1.创建硬链接会增加额外的记录项以引用文件
2.对应同一个文件系统上一个物理文件
3.具有相同 inode节点(节点编号)的多个文件互为硬链接文件
4.硬链接文件是源文件的另一个入口
5.可以通过给文件设置硬链接来防止重要文件被误删
6.创建时链接数递增
7.删除文件时:
rm删除硬链接时会出现 源文件上递减链接数
文件存在的话。最少有一个链接数
当链接数为零时,该文件被删除
8.删除硬链接文件或者删除源文件任意之一,文件实体并不会被删除
9.只有删除源文件和所有对应的硬链接文件,文件实体才会被删除
10.硬链接文件是普通文件,可以用rm删除
11.不能跨分区 进行硬链接操作
12.不能对目录进行硬链接
语法:
in filiename [lnkname]

?
?
?

软连接:

  1. 一个符号链接指向另一个文件
    2.ls -l的显示链接名称和引用的文件
    3.一个符号链接的内容是他引用文件的名称
    4.软链接里面存放的是源文件的路径,指向源文件
    5.软连接失效时 一般是白字红底闪烁
    6.软连接和源文件是不同的文件,文件类型不同 inode节点编号也不同
    7.可以对目录进行 软连接
    8.可以跨分区
    9.指向的是另一个文件的路径,其大小为指向的路径字符串的长度;不增加或减少目标文件的节点编号 inode引用计数
    语法
    is -s filename [linkname]

?
?
?
区别:
原理上,硬链接和源文件的inode节点号相同,两者互为硬链接。软连接和源文件的inode节点号不同,进而指向的block也不同,软连接block中存放了源文件的路径名。
实际上,硬链接和源文件是同一份文件,而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接。

?
?
?
?
······························································································································

                                                  ln -s 和mv的区别

ln -s 只是在目标地方创建个新的文件 这个文件只是软连接并且有新的节点编号。指向源文件数据不会搬家

而mv不同 mv是cp 和rm的组合 直接吧文件包括数据直接移动。但是节点编号不会改变。并且源地址的数据会被删除

以上是关于硬链接和软连接的区别以及 ln -s 和mv的区别的主要内容,如果未能解决你的问题,请参考以下文章

硬链接和软链接的区别

linux中软链接和硬链接的区别与小结

Linux中硬链接文件和软链接文件有啥区别?

Linux文件系统中硬链接和软链接的区别

Linux中硬链接和软链接的区别与联系!

2-18 Linux中的连接文件 --- 软链接