我以前一直想知道为什么通过 PHP 或 shell 删除目录不像在 Windows 中那样简单,只需单击删除即可。现在我意识到删除只是从文件分配表中取消链接文件,因此要删除目录,您必须取消链接其中的所有文件。
是否有可能删除目录的条目,但不能删除其中的文件?操作系统是否会定期检查文件系统中无法访问的文件?
答案1
许多 UNIX 都有一个unlink
命令允许用户root
取消链接目录,但它确实不是递归地取消目录内容的链接,因此非常危险。如果发生这种情况,请使用fsck
恢复断开的目录,该目录将以lost+found
随机名称出现在文件系统的文件夹中(因为发生这种情况时名称已丢失unlink
)。
答案2
是的,这是有可能的,但可能性不大,因为操作系统中已经设置了相关程序来防止这种情况发生,但是磁盘错误和异常可能会导致事情发生。
这通常是校验,文件系统检查,还有许多其他实用程序可以完成这些任务。它们读取分配表并将其与已知文件条目进行匹配……任何错误都会导致采取某些措施。
在 Windows 中,您通常可以通过查看特性右键单击驱动器图标时,选项。它可能然后进行检查,尽管 Windows 似乎更倾向于启动磁盘检查,但它会告诉您它将在下次重新启动时执行此操作。
在 Linux 中,... 在活动系统上使用 fsck 实用程序可能会严重伤害自己,这就是为什么 Linux 机器通常总是在启动时执行文件系统检查 (fsck!)。 只需重新启动通常就会导致检查发生。(虽然我知道当 UPS 发生故障时从我的家用服务器中拔掉电源也会触发检查!)(文件系统被标记为脏)
OS X?一点儿头绪都没有。我猜想你只是在机器旁边喝了杯拿铁,然后它通过与最近的 GeniusBar 连接来修复自己的问题。(我想你可能也需要在星巴克™ 里面或附近)