现在的位置: 首页 > 综合 > 正文

关于linux 文件系统中的目录,目录项,硬链接,符号链接

2017年11月14日 ⁄ 综合 ⁄ 共 1002字 ⁄ 字号 评论关闭

最近因为这个目录中的目录项搞的很晕乎了,一直不清楚什么事目录项,而且符号链接也有点含糊,这里转载了一篇文章感觉写的比较好。

我们先来说说目录,目录项的问题:

在Linux操作系统中,目录就是目录文件。

一个目录文件包含了一组目录项,目录项是放在data block中的。

一个目录项主要包括了文件名和索引节点号,索引节点号是指向索引节点表( system inode table )中对应的索引节点的。
或者这样解释一下目录项( 这是大家一起讨论出来的 ),因为目录可以包含子目录,目录是可以层层嵌套的,所以形成文件路径,而文件路径中的每一部分就是所谓的目录项(dentry)。
注:内核后来的版本采用ext文件系统时,目录项中就不是存放索引节点号,然后找到索引节点表,再找到索引节点了。而是目录项中存放文件名和一个指向索引节点的指针。
索引节点是文件系统处理文件所需要的所有信息都存放在称为索引节点的数据结构中。主要就是文件的属性,包括链接数、文件所有者、文件建立和修改的时间,文件在磁盘的位置,文件大小、使用权限等等。

接下来是硬链接,符号链接:

<一> 硬链接(hard link):指向文件的索引节点。

     与同一个文件建立硬链接的目录项的索引节点号是相同的。

e.g.
创建               file1                (52473, file1)    ()中的是索引节点号和文件名
对file1建立硬链接   file2                (52473, file2)
                  file3                 (52473, file3)

当建立了硬链接文件后,3个文件具有相同的索引节点号,它们都指向了同一文件的文件内容,因此文件大小相同。

注:硬链接不可以在不同文件系统的文件间建立链接

<二>符号链接(symbolic link):又称软链接。符号链接类似于windows操作系统的快捷方式。

e.g.
ln -s file1 file1.soft

file1和file1.soft各自有不同的文件名和索引节点号
file1.soft的文件内容:file1的路径名,大小为5个字节。

注:符号链接文件可以跨越不同文件系统
   若链接指向的文件从一个目录移动到另一个目录下,就无法通过符号链接访问它。
   因为符号链接文件含有源文件在文件结构中的路径信息,所以建立符号链接需要一个索引节点,需要占用空间。

抱歉!评论已关闭.