如何给被windows洗脑的人解释硬链接和软链接
发布网友
发布时间:2022-04-23 04:10
我来回答
共1个回答
热心网友
时间:2023-10-14 09:46
这是为了向熟悉windows而没有接触过linux的同学解释软文件系统软链接硬链接而准备的一些材料收集。若有错误或不详之处欢迎指出,材料很零散,还需要进一步加工,加工方法也望各位不吝赐教。
软链接(又叫符号链接)就基本等同与windows下的快捷方式,软链接也是一个文件,而文件的内容是指向另一个文件,windows下的快捷方式也是这。若在windows下观察的话,快捷方式都是.lnk文件,如果资源管理器显示不出.lnk后缀名,可以使用cmd下dir或ls显示一下,就可以看到那些快捷方式文件。linux下的软链接也是一个文件,文件的内容又指向了另外的文件。
硬链接再wondows下的基本对应之物就是NTFS下的fsutil hardlink. 另外windows下有个subst将文件夹映射为磁盘,我认为这样的文件下的文件和硬链接很像。
硬链接是指向节点iNode,软链接是指向文件路径path。从文件系统分区讲,一个文件由iNode、文件内容数据和目录项(文件名)组成,创建硬链接就是对 一组iNode和数据传建新的目录项(文件名),iNode和目录项的关系是 每有一个目录项指向这个iNode,iNode中的引用计数就会+1,没删除一个目录项则计数-1,若计数减到0了这个文件就可以完全擦除了。软链接本身是一个文件,文件的内容是指引文件系统到达另外一个文件路径,软链接不会对目标文件的iNode引用计数产生影响,而甚至可以传建软链接指向这个软链接文件自身。若软链接的目标路径已经被删除,也不影响该软链接文件的存在,但是它断链了。等效于windows下一个失去目标文件的快捷方式。
我猜想若一个程序通过软链接打开了一个文件,实际上操作系统会在该程序使用的资源里记录它打开了两个文件,分别是软链接文件和正真目标文件,希望懂行的同学指点下。
linux下删除文件可以不使用rm而使用unlink,实际上unlink更本源。
为什么有了硬链接 还要有软链接?
(这个就类似于为什么在windows下是使用subst命令映射磁盘或junction映射目录一样之外还要有快捷方式一样。)
硬链接和软链接都存在不同的局限性。硬链接不能跨文件系统,因为指向同一个iNode,这是在一个文件系统分区内才可以做的事情。而软链接没有这个*,可以跨文件系统传建软链接,甚至为网络上的文件传建软链接。
因为硬链接是iNode层面的东西,所以不能为文件夹传建硬链接。但是可以却可以创建软链接。
为一个文件传建硬链接,其实类似于给这个文件传建别名,只是类似而不是完全等同是因为 这两个名字之后其实分不清谁是第一个原始的文件名谁是后起的别名,这两个甚至多个名字是完全等同的。
创建硬链接和拷贝的关系?
创建硬链接没有在磁盘上创建新的文件,而只是同一个文件拥有了两个或多个文件名,操作任何一个文件名都是操作这同一个文件。而拷贝确实整整正正在磁盘上把这个文件复制了一边,从此这两个文件在最初是一样的,而之后更改任何一个都与另外一个没有关系。