如果我没记错的话,文件夹本质上只是指向存储其他文件的位置的文件。这让我想知道如果文件夹以某种方式被删除而其中的文件没有被删除会发生什么。是否可以在目录树之外创建或访问文件或数据?
答案 0 :(得分:1)
由于您没有指定我们定位的文件系统或操作系统,因此只能广泛回答此问题。
通常,文件不能存在于任何文件系统的目录树之外,因为它们首先不能被视为文件。
考虑到这一点,当一个或多个文件中包含的数据当然可能在删除了保存它们的文件夹后仍存在于硬盘驱动器上。删除选项几乎总是 - 为了速度 - 通过简单地切断文件的实际数据和文件系统之间的所有链接来实现。
因此,使用正确的工具仍然可以恢复丢失的文件。
答案 1 :(得分:1)
是的,有可能。只要有一个进程具有该文件的有效文件描述符,linux就不会销毁它。即使文件已从其目录中删除。它被称为未命名文件。
来自The Linux Programming Interface - A Linux and UNIX System Programming Handbook, p.346
:
仅在关闭所有文件描述符时才删除打开的文件 除了维护每个i节点的链接数之外,内核还会计算开放状态 该文件的文件描述(参见图5-2,第95页)。如果文件的最后一个链接是 删除并且任何进程都持有引用文件的开放描述符,即文件 在关闭所有描述符之前,实际上不会删除它。这是一个有用的功能 因为它允许我们取消链接文件而不必担心是否 其他一些过程开放了。 (但是,我们无法将名称重新附加到打开的文件中 其链接数已降至0.)此外,我们可以执行诸如creat-之类的技巧 打开并打开一个临时文件,立即取消链接,然后继续 在我们的程序中使用它,依赖于文件仅在被销毁时被销毁的事实 我们在程序退出时显式地或隐式地关闭文件描述符。
最近,linux提供了打开这样的描述符而不将其添加到任何目录的可能性。 (见O_TMPFILE)