https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
- 这里对linux文件系统作了很全面的解释,简而言之,linux文件数据的唯一标识是inode号包含在元数据(metadata)中,文件系统包含一个(我猜是hash表)索引提供文件路径的方式访问真正的userdata。
- 当我们通过文件名访问文件时,linux会先查找到inode号对应的metadata,再进行一系列操作。
硬链接
硬链接是一个inode标示文件的不同别名
可以使用ls -i 和stat来查看元数据
创建方法:
# ln old.file hard.link //或者 link old.file hard.link
ls -li
total 8
660650 -rw-r--r-- 2 root root 25 Sep 1 17:44 hard.link
660650 -rw-r--r-- 2 root root 25 Sep 1 17:44 old.file
- 硬链接文件具有和源文件相同的 inode和datablock;
- 只能对已存在的文件创建硬链接;
- 不能交叉文件系统创建硬链接;
- 不能对目录创建硬链接(. .. 这两个除外);
- 删除硬链接只是将对应的inode指向文件的metadata中的link字段减一;
- 文件权限完全相同;
软链接
转链接是一个普通文件,数据块的内容是另一个文件的路径
示例:
# ln -s old.file soft.link
# ls -liF
total 0
789467 lrwxrwxrwx 1 root root 8 Sep 1 18:00 soft.link -> old.file
- 可以对不存在的文件或目录创建软连接
- 指向目标不存在的软链接成为死链接
- 软链接文件有这自己的inode号和独立的权限;