文件读取、删除与软链接、硬链接的关系

自己粗略画的一张帮助自己理解Linux文件系统中软、硬链接的概念与差异以及删除文件与链接的关系的图。

文件读取、删除与软链接、硬链接的关系_第1张图片
文件读删与链接的关系

  打个形象点的比喻吧!拿人比喻Linux系统中的文件,那inode(index node)即相当于人的身份证号,软链接(如上图的sl1、sl2)相对其链接的目标文件其实是两个不同的人,只不过是“软链接”这个家伙手里有“目标文件”这个人的联系方式,能通过联系方式随时找到“目标文件”,所以说这两者的身份证(inode)当然也是不同的;而"硬链接"这家伙与其指向的"目标文件"其实都是同一个人(如上图的mystu,mystu2,stu.txt都是同一个文件的不同名字罢了)。

  正因为如此,才很好地解释了“为什么软链接可以跨分区存在,而硬链接却不行?”这个问题。两个不同的人同一时间当然可以在不同城市喽,而一个人是不可能做到的,你又不是孙猴子!还有为什么软链接又有相当于Windows中的快捷方式一说呢?因为我们常常装的程序文件不会在C盘(小白才这么干对吧?),而快捷方式显示在的“桌面”即存在于系统盘里(即快捷方式是在C盘的),所以基本上快捷方式与原文件都不在同一个分区里,跟软链接几乎一样对吧!称它们为兄弟也不为过。

  那么在Linux中删除文件的本质是什么呢?还是拿上面我画的图来说明吧,上图总共有5个文件,2个软链接文件(sl1,sl2)、3个硬链接文件(stu,mystu,mystu2),它们都最终指向同一个目标文件。而删文件的本质就是:断开文件名指向其inode的那条索引。文件被删除的条件即:指向自己的索引为0了,且此时也没有任何进程在调用自己。那这个时候也就可以说这个文件被删除了(尽管系统不会马上而是在随时的某个时候)。

你可能感兴趣的:(文件读取、删除与软链接、硬链接的关系)