【发布时间】:2018-05-27 19:57:23
【问题描述】:
假设我创建了一个文件。一个新的 inode 已创建。 然后我创建了一个指向该文件的软链接,并删除了硬链接。
inode 还存在吗?它是否指向内存中的相同位置? 是软链接连接到连接内存的inode,这就是找不到文件的原因,还是软链接失去了与inode的连接?
谢谢。
【问题讨论】:
标签: linux unix symlink inode hardlink
假设我创建了一个文件。一个新的 inode 已创建。 然后我创建了一个指向该文件的软链接,并删除了硬链接。
inode 还存在吗?它是否指向内存中的相同位置? 是软链接连接到连接内存的inode,这就是找不到文件的原因,还是软链接失去了与inode的连接?
谢谢。
【问题讨论】:
标签: linux unix symlink inode hardlink
这是题外话,不止一个问题,但是:
Linux 中的软链接未连接到 inode。它只有文件的名称(查看软链接的大小?它是链接到的名称的长度!)。即使重命名原始文件也会断开链接。
[bart@localhost link]$ touch foo
[bart@localhost link]$ ln -s foo bar
[bart@localhost link]$ ls -la
lrwxrwxrwx 1 bart bart 3 Dec 13 21:09 bar -> foo
-rw-rw-r-- 1 bart bart 0 Dec 13 21:09 foo
[bart@localhost link]$ mv foo foo2
[bart@localhost link]$ ls -la
lrwxrwxrwx 1 bart bart 3 Dec 13 21:09 bar -> foo
-rw-rw-r-- 1 bart bart 0 Dec 13 21:09 foo2
[bart@localhost link]$ cat bar
cat: bar: No such file or directory
如果你删除一个文件,一个 inode 就会消失。
【讨论】:
inode 将消失。只要您至少有一个硬链接,inode 就会继续存在。软链接将不起作用。软链接实际上是一个单独的文件。硬链接是指向同一文件的另一个指针。一旦硬链接计数变为零,inode 就会被删除。
只要内存没有被覆盖,它就会继续存在(因此磁盘恢复工具将能够得到它),但就操作系统而言,内存是可以重复使用的.
【讨论】: