目录不知何故被转换为文件,我该如何将其改回来?

目录不知何故被转换为文件,我该如何将其改回来?

当我ls -ls打开我的文件夹时,我看到了这个:

27216 -rw-r--r--   1 qat users 27865731 2012-03-16 09:13 deploy

但它是一个目录,有没有快速的方法将其转换回来?

答案1

不,没有快速的方法将其转换回来。

我同意一位评论者的观点,你可能无意中删除了目录并将其替换为文件。假设文件大小没有变化,27MB 将是一个巨大的目录,包含数十万个文件。在从事 Unix 管理工作的多年中,我只见过一个目录包含超过 100,000 个文件,所以我怀疑你的目录是否这么大。查看文件内容,看看它是否看起来很熟悉;很有可能该文件包含来自某个进程的日志输出。

假设你没有记错,目录曾是默默地转换为常规文件,这对您的系统来说是个坏消息。很多事情都可能出错,除非我弄清楚哪个组件(磁盘、磁盘控制器、RAM、文件系统代码)出现故障,否则我不会再信任这个系统。

答案2

我在运行 arch-linux 时也遇到了这种情况,因为我的 /home 目录安装在 USB 硬盘上,并且它处于自动暂停状态。因此,我在 /home/user 目录中打开了 urxvt 和 tmux,并登录到 X。

我离开屏幕一个小时,然后回来在 urxvt bash shell 中输入 vim。由于驱动器被挂起,因此必须先唤醒它们,因此 vim 需要大约 5-10 秒才能加载。这不一定非要使用 vim,但当我返回 bash 时,我的一些目录(如 /home/user/tmp 和 /home/user/.vim)已从目录转换为文件。

对我来说,解决方法是以 root 身份重新启动到第 3 级并卸载 /home,然后在硬盘上运行 fsck -f,然后我重新启动,文件已被转换回目录,并且我的文件都没有丢失或损坏。

然后我禁用了 USB 自动暂停以防止它再次发生。

相关内容