我可以从“rm / *”中恢复吗?

我正在运行Debian …而且,我不小心以root身份运行“rm / *”(幸好!) – 幸运的是我没有使用-r,所以dir仍然完好无损。 但是,当试图启动,我得到…

run-init: /sbin/init: No such file or directory Kernel panic - not syncing: Attempted to kill init! 

…但是,从另一台机器检查驱动器后,我可以确认存在/sbin/init 。 唯一缺less的是根文件,我replace了sym连接(initrd.img和vmzlinuz)…

也许还有一些我需要更换的链接?

你真的跑了吗?

 # rm / 

要么

 # rm /* 

因为如果你运行前者,你不应该删除任何文件,因为除非你添加-r否则rm不会删除一个目录。

我会build议运行:

 # update-initramfs -c -k all # update-grub 

但我不认为这会解决您的问题。 你可能也想检查你的/boot/grub/menu.lst,以确保它指的是正确的内核和initramfs镜像。

我曾经想要inputrm folder/*但是在运行的系统上,不小心键入了rm folder /* ,SCO Xenix或者SCO UNIX。 由于UNIX实际上并没有删除打开的文件,直到它们closures,系统才能正常运行。

我知道,如果我把所有丢失的文件放回去,重启会正常进行,并且没有什么不好的事情发生。 幸运的是,我安装了另一台安装了相同操作系统的服务器,然后我把它们从文件系统根目录下的所有文件复制到一张软盘上,然后放回到阉割系统上。 之后,当晚每个人都注销后,我重新启动,从来没有问题。

所以你应该可以做类似的解决这个问题。 如果你没有一个匹配的运行系统,但你有一个带有Virtualbox或XEN的工作站,那么你可以只安装一个虚拟机来获得匹配的系统。

当然,当我们有SCP和FTP来移动文件时,我不build议在这个时代使用软盘。

原来我缺lesslib64 …

 ln -s /lib lib64 

现在服务器启动了! 🙂

冒着nec命的危险,我试图解决这个问题的时候也来了这个答案。 值得注意的是,如果您在系统仍在运行的时候尝试恢复,那么您可能无法执行“ln”,因为您将丢失一个库 – 您需要执行以下操作:

 /lib/ld-2.11.1.so /bin/ln -s /lib/ /lib64/