目录
inode的概念及其作用
索引节点是 Linux 文件系统中的秘密工作者,它们存储文件或目录的元数据,存储了有关文件的各种信息,如权限、所有者、文件大小、时间戳等。每个文件都对应一个唯一的索引节点,这个节点在文件系统中有一个唯一的索引号(inode number)。索引节点可以被看作是文件的“管理者”,它记录了文件的所有关键信息,而文件名则只是指向这个索引节点的一种方式。
里面记录着如下信息 :
文件的访问权限(read、write、execute)
该文件的所有者与所属组(owner、group)
该文件的大小(size)
该文件的创建或内容修改时间(ctime)
该文件的最后一次访问时间(atime)
该文件的修改时间(mtime)
文件的特殊权限(SUID、SGID、SBIT)
该文件的真实数据地址(point)。
在Linux中我们可以用ls -li命令查看当前目录下的文件的inode。

也可以用stat命令查看某个文件的inode信息。

在 Linux 系统中 ,inode 号才是文件的唯一标识而非文件名。文件名只是为了方便人们的记忆和适用。
硬链接(Hard Link)
什么是硬链接?
可以将它理解为一个 “指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。

简单来说,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为硬链接(hard link)。
如何创建一个硬链接?
我们可以使用ln命令创建一个指向现有文件的新硬链接(另一个名称)。该命令至少需要两个参数,即现有文件的路径以及要创建的硬链接的路径。
例如将/tmp目录中为现有文件newfile.txt创建一个硬链接newfile-hlink2.txt。
ln newfile.txt /tmp/newfile-hlink2.txt

不难发现,在创建完成之后两文件都变为数字2,其代表对应文件的硬链接数。
软链接(Symbolic Link)
什么是软链接?
文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的软链接(soft link)或者符号链接(symbolic link),类似于Windows中的快捷方式,所以若原文件删了,那么软链接就失效了。
如何创建一个软链接?
ln -s /home/kiosk/newfile /tmp/newfile-symlink
注意:要使用绝对路径来创建不然系统有可能会找不到对应的文件。

在使用ls -l命令显示文件和目录信息时,第一个字符代表文件类型,若显示为 l 那么就是软链接。并且会用箭头指向它所对应的原文件。
软硬链接对比
| 软链接 | 硬链接 | |
| inode | 原文件和链接文件是两个不同的文件,它们拥有不同的inode号码 | 原文件和链接文件是同一个的文件,它们共用同一个inode号码 |
| 文件属性 | 明确指明是链接文件 | 和原文件的属性一致。因为在本质上硬链接文件和原文件是平等的关系 |
| 跨文件系统建立 | 可以 | 不可以 |
| 删除原文件对链接文件是否有影响 | 删除原文件后,软链接文件就失效了 | 原文件删除后,链接数会减1,只有链接数减为0时才算真的删除文件 |
结语
感谢观看,如有错误欢迎指证。
6234

被折叠的 条评论
为什么被折叠?



