【两者区别】
软链接:(Symbolic Link跟Windows下的快捷方式完全一样,因此:)
(1). 软链接以路径的形式存在。类似于Windows操作系统中的快捷方式
(2). 软链接可以跨文件系统,硬链接不可以
(3). 软链接可以对一个不存在的文件名进行链接
(4). 软链接可以对目录进行链接
硬链接:(Hard Link:是在同一分区下建立的数据关联,因此)
(1). 硬链接以文件副本的形式存在。但不占用硬盘实际空间。
(2). 不允许给目录创建硬链接
(3). 硬链接只有在同一个文件系统中才能创建,不能跨文件系统。
【两者关联】
两者都不占用多少实际物理空间。 软连接,前面有个l做标志,还有个->指向文件作为标志。而硬连接和普通文件一样,硬连接删掉其中一个,只不过删掉了一份关联数据,实际物理文件仍存在,软连接删掉源文件的话,目标文件也就不存在了。 相比硬连接,软连接更常用些。
【Linux下文件的读取方式】
第一步: 先通过一层一层的目录获取文件相关的关联数据
第二步: 再到对应的inode获取文件属性,以及文件内容数据所在的块。
第三步: 最后到块区域获取文件的数据。
硬连接只是在某个目录下新增一个该文件的关联数据,比如:/root/crontab为一个硬连接文件,它连接到/etc/crontab文件,也就是说/root/crontab与/etc/crontab是同一个文件,只是有两个目录(/root与/etc)记录了crontab文件的关联数据。
/root/crontab --> 某处(crontab的inode和块)
/etc/crontab --> 某处(crontab的inode和块)
也就是无论删掉/etc或/root下的crontab,都不会改变crontab的inode和块! 这样做的唯一好处就是:安全.