linux的软硬链接的主要区别在于:软链接可以跨分区识别,但硬链接只能在同一个分区使用!!!
1.对文件src.txt创建一个硬链接hard-src.txt,创建时会发生什么?
搭:当执行命令:link src.txt hard-src.txt ,系统会给hard-src.txt分配src.txt文件上面的元数据,即硬链接之后的文件和源文件具有相同的inode和data block,共用。
2.对硬链接hard-src.txt进行操作(读写)时,发生了什么?
答:当对硬链接进行读写时,系统直接根据硬链接的inode(源文件)找到用户数据去更改,源文件的用户数据也会改变,因为他们其实就是同一个元数据和用户数据的不同打开方式。
针对删除而言,删除硬链接,是删除指向源文件的inode指向,源文件没有任何改变。
3.对文件src.txt创建一个软连接symbolic-link.txt,创建时会发生什么?
答:当执行命令:ln -s src.txt symbolic-link.txt,系统会给symbolic-link.txt创建一个新的元数据和用户数据,权限(777)等都和源文件不一样,但是该软连接的用户数据里面只有一项:指向源文件的元数据(inode)。
软连接的内存空间就是源文件的内存空间
4.对软连接symbolic-link.txt进行操作(读写)时,发生了什么?
答:当对软连接进行读写时,系统根据软连接的名称,找到软连接自己的inode,从而找到他自身的用户数据(指向源文件的inode),然后通过里面指向源文件的inode,直接读取源文件的用户数据,然后更改用户数据的操作,会写在源文件的用户数据里面,对软链接进行读写,只是更改源文件的用户数据,软链接里面的用户数据始终都是指向源文件的inode
针对读写而言,是通过软连接递归查找到源文件的inode,直接对源文件的用户数据进行读写;
针对删除而言,是删除软链接与源文件的关联,对源文件没有任何影响;