1.硬链接
一般情况下,文件名和inode编号是一一对应的关系,每个inode号码对应一个文件名。但UNIX/Linux系统多个文件名也可以指向同一个inode号码。这意味着可以用不同的文件名访问同样的内容,对文件内容进行修改,会影响到所有文件名。但删除一个文件名,不影响另一个文件名的访问。这种情况被称为硬链接。
创建硬链接的命令为ln 源文件 目标文件
inode信息中有一项叫做“链接数”,记录指向该inode的文件名总数,这时会增加1,变成2。
同理,删除一个jf2.txt文件,会使jf1.txt inode节点中的“链接数”减1。如果该inode值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。
注意:硬链接不能跨分区链接,硬链接只能对文件生效,对目录无效,也即是目录不能创建硬链接。
2.软链接
除了硬链接以外,还有一种链接——软链接。文件jf1.txt和文件jf2.txt的inode号码虽然不同,但是文件jf2.txt的内容是文件jf1.txt的路径。读取文件jf2.txt时,系统会自动将访问者导向文件jf1.txt。
无论打开哪个文件,最终读取的文件都是jf1.txt。这时,文件jf2.txt就称为文件jf1.txt的"软链接"或者"符号链接"。
文件jf2.txt依赖于文件jf1.txt而存在,如果删除了文件jf1.txt,打开文件jf2.txt就会报错。
软链接与硬链接最大的不同是文件jf2.txt指向文件jf1.txt的文件名,而不是文件jf1.txt的inode号码,因此文件jf1.txt的inode链接数不会发生变化。
创建软链接的命令为ln -s 源文件 目标文件
注意:软链接可以跨分区链接,软链接支持目录的同时也支持文件链接。