以下内容包含许多个人联想猜测,如有发现错误,请联系小弟改正。
先行谢过!
一、建立硬链接、软连接的语法
建立软连接:ln -s 源文件 目标文件
建立硬链接:ln 源文件 目标文件
二、软连接,硬链接介绍
1、软连接
可以理解为快捷方式,和Windows下作用一样,指向源文件,猜测和windows 中一样只是指向了原文件名所在的地址,如果删除原文件,或者将原文件移动,软链接死掉。使用同名文件替换掉原文件,软链接指向新文件。
是否可以理解为软连接文件名指向一个与原文件不同的inode,即软连接文件是一个新的文件,文件中包含对原文件的路径指向。
2、硬链接
硬链接的inode与原文件的inode相同,猜测这两个是等价的。可以理解为我们看到的文件都只是文件名而已,而这些文件名指向文件的唯一的标识inode,或许最初的“原文件”也只是一个硬链接而已。两个文件都指向同一个inode,就像python中同一个可变类型赋值给几个函数,而这个inode又指向唯一的文件的所在的位置。
使用ls -i 文件名
可以看到文件的inode。可以看到硬链接的inode和原文件的inode相同。
Python具有自动内存管理功能,会跟踪所有的值,当某个值不被任何变量指向时,将会自动将该值销毁以释放内存。所以,大多数情况下,Python开发者不需要考虑过多内存管理的问题(但是由于自动内存管理的操作可能并不会及时进行,所以某些情况下显示地删除指向是必要的)。
猜测:同python中一样,只有所有的指向文件所有的硬链接全部被删除,该文件才会被删除。(大概不是文件被删除,而是文件的inode被清空,而文件的数据依然保存在原来的位置,而文件删除后,数据的恢复应该就是找到你原来数据在磁盘的块号和偏移并使用一个新的inode记录相关的数据,并使用文件名指向该inode)
使用mv指令移动文件名时inode没有改变。
什么是inode?
储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。
可以参考以下文章进行学习。
(107条消息) 软链接和硬链接到底有啥作用和区别_明月几时有666的博客-CSDN博客_软连接和硬链接的区别
(107条消息) 认识Linux文件系统inode和查看inode相关信息_bcbobo21cn的博客-CSDN博客_查看inode