Linux下的链接文件分为两种:一种是软链接,类似Windows快捷方式功能的文件,可以快速链接到目标文件或目录;另一种是硬链接,通过文件系统的inode链接来产生新文件名,而不是产生新的文件。
一、硬链接(Hard llink)
首先,我们需要了解几条重要的信息:
- 每个文件都会占用一个inode,文件内容由inode的记录来指向
- 想要读取文件名,必须经过目录记录的文件名指向正确的inode号才能读取
- 文件名只与目录有关,但是文件内容则与inode有关
- 多个文件名对应到同一个inode号就是hard link的由来,简单来说:hard link 只是在某个目录下新建一条文件名链接到某inode号的关联记录。既不会增加inode也不会耗用block数量。
格式: ln 源文件 目标文件
举例:
硬链接的限制:
- 不能跨文件系统——hard link 仅能在单一文件系统中进行
- 不能链接到目录——如果使用 hard link 链接到目录,链接的数据需要连同被链接目录下面的所有数据都建立链接,会造成环境相当大的复杂度,故而目前 hard link 对于目录暂时是不支持的
二、软链接(symbolic link)
也称符号链接或者快捷方式,实际上,软链接就是在创建一个独立的文件,而这个文件会让数据的读取指向被连接文件的文件名。由于只是利用文件来作为指向的操作,所以当源文件被删除后,软链接的文件会“无法打开”,即找不到源文件的“文件名”。
格式:ln -s 源文件 目标文件
举例:
软链接结果分析:
- 软链接的源文件和目标文件指向不同的inode号,说明这是两个独立的文件。
- 软链接相当于Windows系统下的快捷方式,所创建的文件作为一个独立的新文件,会占用inode与block。
- 软链接的使用较广,没有任何系统的限制