在远程服务器上意外执行 sudo rm /*

Ant*_*Ant 11 data-recovery rm

rm /*在远程 Ubuntu 服务器中以 root 身份登录时意外执行并删除了几乎所有二进制文件,目前我既无法通过 ssh 或 ftp 登录来恢复文件(并希望最好)。

有没有办法以某种方式解决这个混乱,或者我应该打电话给数据中心并要求格式?

cam*_*amh 27

rm /*应该删除很少。那里没有-r标志可以递归删除任何东西,没有它目录不会被删除(即使目录被删除,也只能删除空目录)。这个答案是基于您没有运行的假设rm -rf /*

根文件系统中唯一的文件可能是内核和 initrd 的符号链接(尽管在我正在查看的一个 Ubuntu 系统上,它们不存在)或/lib6464 位系统上的符号链接。

问题可能只是/lib64 -> /lib符号链接已被删除。不过这很糟糕,因为几乎每个程序都依赖于该符号链接:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)
Run Code Online (Sandbox Code Playgroud)

ld-linux就是动态加载器,如果它不可用,您将无法运行任何动态可执行文件。这将使登录变得极其困难,您可能根本无法登录。

一位救世主可能是busybox。运行此检查:

$ ldd /bin/busybox
    not a dynamic executable
Run Code Online (Sandbox Code Playgroud)

在这种情况下,busybox 应该是可运行的,但问题是如何运行它?

如果您有权访问引导加载程序提示符,则可以使用 引导init=/bin/static-sh,其中 static-sh 是指向的符号链接busybox(检查是否/bin/static-sh存在 - 它在我的系统上,但它不是标准的 Ubuntu。 这个错误表明它是可用的.)

一旦你有了一个 root shell,你就可以重新创建/lib64符号链接。您可能需要首先将根文件系统重新挂载为读/写。busybox 应该内置了这些工具,您可以按如下方式运行:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 
Run Code Online (Sandbox Code Playgroud)

如果 bash 有效,则问题应该得到解决。


Oli*_*Oli 18

如果您需要从当前安装中恢复文件,请让您的主机帮助您。假设它是一个虚拟机,他们一天中大约需要五分钟来镜像你的磁盘,从头开始重新安装你的主机并将旧的磁盘映像转储到你的新文件系统中。

如果您不需要任何东西,只需让它们重新安装即可。当您将事情变得困难时,几乎总是更快的选择。

  • 同意。如果他们是一个相当称职的 VM 托管服务,他们应该能够做到这一点。尽快与他们联系,以确保他们仍然有搞砸前的备份。 (2认同)