了解硬链接之前先梳理一些概念
Inode 编号:
Inode 编号是文件的索引节点的编号,每个文件都会有一个Inode编号。系统需要找到文件是根据 Inode 编号进行索引。
文件名:
无论是一个目录还是文件,都有一个文件名。它是给操作者看的。系统不看文件名,系统是根据 Inode 编号找到这个文件名再进行操作。
硬链接:多个文件对应同一个 Inode 编号,对多个文件中的某一个文件修改内容,同一 Inode 编号的文件都会随之发生内容上的改变。它的工作模式是 多用户协同一致工作。
查看Inode 编号:
ls -i:-i 选项是列出文件的 Inode 编号。可以整合其他选项一同查看。
如 ll -i 列出详细内容和Inode 编号
创建硬链接有两种方法:
link oldfile newfile 和 In oldfile newfile
例:对 test.txt 文件创建 5 个硬链接
ll -i 查看详情。发现虽然 6 个文件名都不一样,但 Inode 编号都一样。对于系统来说,虽然 文件名不一样,但是 Inode 编号是一样的。它们就是同一个文件。所以,即使不同的文件名 进行操作,最后存储的文件都只有一个,就是这个 Inode 编号的文件。
Inode 编号一样的文件,随便对其中一个文件进行内容的增删改查。其他的文件内容上也随 之发生变化。
例:vim user1 这个文件,添加内容 user1 保存退出。然后,查看其他 Inode 编号一样的文 件看看有什么变化。
cat 了其他几个文件,反馈出来的信息都是 vim user1 的内容。证实了 Inode 编号一样的文 件。只要有一个文件内容变化了,都会反映到同一 Inode 编号的文件当中。
如同,再对 user3 文件增加一个 user3 这样的内容,其他同一 Inode 编号的文件也会体现出同样的内容。
tips:硬链接特点:
1、不能对目录创建硬链接。
例:1、mkdir test 创建一个 test 的目录。
2、ll -i 确认 test 目录已经生成。
3、link test t1:对 test 目录创建一个名为 t1 的硬链接。
4、报错:t1 不能生成硬链接到 test 。
2、只能对已经存在的文件进行硬链接创建,也就是不能像软链接那样创建一个空的指向。
例:1、link user10 u1:user10 文件不存在,却对 user10 创建一个 u1 的硬链接。
2、报错:没有找到文件
3、删除一个硬链接文件,不影响其他相同 Inode 编号的文件 rm -rf user1 user2 user3 user4 user5:删除同一 Inode 编号的 user1-5 的文件。cat test.txt 文件,同样可以看到内容。 证明了, 删除同一 Inode编号的硬链接文件,不会对其他文件有影响。
网友评论