目录确实有硬链接...每次您mkdir创建一个新目录时,该..条目都是指向与父目录相同的 inode 的链接。
例如
$ ls -lid .
23855134 drwxr-xr-x 2 sweh sweh 4096 Sep 8 21:57 .
$ mkdir foo
$ ls -lid . foo/..
23855134 drwxr-xr-x 3 sweh sweh 4096 Sep 8 21:57 .
23855134 drwxr-xr-x 3 sweh sweh 4096 Sep 8 21:57 foo/..
Run Code Online (Sandbox Code Playgroud)
我们可以看到目录上的链接计数增加了 1(从 2 到 3),索引节点为“.”。和“foo/..”都是23855134。您会注意到它以两个链接计数开始;那是因为 ”。” 并且父目录中的条目也共享 inode 号
$ ls -lid foo foo/.
23855343 drwxr-xr-x 2 sweh sweh 4096 Sep 8 21:57 foo
23855343 drwxr-xr-x 2 sweh sweh 4096 Sep 8 21:57 foo/.
Run Code Online (Sandbox Code Playgroud)
现在,如果您能够通过编辑文件系统来建立另一个链接,您很容易就会抱怨fsck。
不要这样做:-)
从技术上讲,您也可以轻松做到这一点:debugfs有一个ln可以创建目录硬链接的命令。这样做会产生一个工作文件系统,其中多个目录指向同一个 inode(超出..了Stephen Harris的答案),尽管如果您希望其正确显示,您需要手动处理链接计数。
正如斯蒂芬所说,这会让人e2fsck不高兴,并且它将删除重复的目录条目(不过你不会丢失数据,它会留下一个目录)。
(我还没有尝试过任何真正损坏的东西,特别是目录循环......)
| 归档时间: |
|
| 查看次数: |
2334 次 |
| 最近记录: |