1.创建链接
首先ln –help 可以看到默认创建的链接是硬链接。若是要创建符号链接则需要使用-s 参数
格式是: ln 源文件 链接文件 或者 ln -s 源文件 链接文件
2.区别
首先我创建了a和b文件。 然后又分别建立了a的硬链接a2,b的符号链接b2
由图中即可看出区别:
1.a和a2的 inode号相同,b和b2的inode号却不同
2.a和a2均是普通文件 ,即以 -打头,而b2则是以l打头,说明它是一个符号链接。
3.每建立一个硬链接,文件的链接数量就会+1,而符号链接则不会
简单理解inode,当系统分区设置完成之后,设置了文件系统就会产生inode,inode会记录文件的属性和block的位置,block则是
具体存放我们文件内容在磁盘的地方。
观察上图,标记处,由此可以得知:硬链接文件的inode实际上是和源文件的inode一模一样,可以得知,它们都指向了磁盘的同一个地方。类似于Java里的2个个字符串a和b,它们的值都是“abc”,均指向常量池的同一个地方。所以每当建立一个硬链接时候文件的链接数都会加1。
而同样的:我们也建立了第三个符号链接,可以看到b b2 b3的链接数都是1.,以及它们的inode均不同,由此可以得知符号链接是单独的一个文件,它里面存放的内容如下图维基百科:即它文件里存放着源文件的路径,所以inode不同,新建符号链接数时候链接数也不会+1
4.创建硬链接时候源文件必须存在,而创建软链接时候,源文件可以不存在。
创建c 和c1时候发现创建失败,而符号链接则可以创建成功。只是不生效。
5.删除硬链接的源文件和符号链接的源文件
删除硬链接的源文件,对硬链接无影响,只要它们的链接数不为0,磁盘上就不会清空文件的内容,文件内容还在,当文件的链接数为0时候,才会被清空。
删除符号链接的源文件之后,符号链接仍然还在,只是失效了(因为所指的的路径的文件已经被删除了)。
如下图1和2:
删除硬链接源文件a和1个硬链接a2,再cat a3发现,仍然正常。只是链接数-2。
可以看到删除b之后,b2和b3均已经失效了,且在屏幕上,它们所指的源文件因为被删除,所以在闪烁。
6.相同点;修改文件则会同步源文件和链接文件
这是当然的,硬链接指的是同一块磁盘区域,符号链接记录的是路径。所以不管修改哪个文件,源文件或者链接文件,文件里的内容都会同步
国外一个参考链接:https://linuxhandbook.com/inode-linux/