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

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

我正在运行 Debian... 而且,我意外地以 root 身份运行了“rm /*”(万岁!) - 幸运的是我没有使用 -r,所以目录仍然完好无损。但是,当我尝试启动时,我得到了...

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

...但是,在另一台机器上检查驱动器后,我可以确认它确实/sbin/init 存在。唯一缺少的是根目录中的文件,我已经替换了符号链接(initrd.img 和 vmzlinuz)...

也许我需要替换更多链接?

答案1

你真的跑了吗

# rm /

或者

# rm /*

因为如果您运行前者,您不应该删除任何文件,因为 rm 不会删除目录,除非您添加-r

我建议运行:

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

但我不认为这能解决您的问题。您可能还想检查 /boot/grub/menu.lst,以确保它引用了正确的内核和 initramfs 映像。

答案2

有一次我想输入,rm folder/*但却意外地rm folder /*在正在运行的系统(SCO Xenix 或 SCO UNIX)上输入了。由于 UNIX 实际上不会删除打开的文件,因此除非关闭它们,否则系统将继续正常运行。

我知道,如果我把所有丢失的文件都放回去,重启就会正常成功,不会发生任何不好的事情。幸运的是,我还有另一台安装了相同操作系统的服务器,我去到那台服务器上,把文件系统根目录中的所有文件复制到软盘上,然后把它们放回被阉割的系统上。那天晚上,在所有人都注销后,我重启了系统,再也没有出现问题。

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

当然,在我们有 SCP 和 FTP 来移动文件的今天,我不建议使用软盘。

答案3

原来我缺少 lib64......

ln -s /lib lib64

...服务器现在启动!:)

答案4

冒着死机的风险,我在尝试解决该问题时想到了这个答案。值得注意的是,如果您在系统仍在运行时尝试从此问题中恢复,则可能无法执行“ln”,因为您将缺少一个库 - 您需要执行类似以下操作:

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

相关内容