我刚刚删除了“/ bin”。 什么是恢复的最佳方法?

我只是跑(不是故意的!) rm -rf /bin

我已经启动了电脑,正在使用Finnix来尝试恢复。 我成功安装了驱动器,并确认整个/bin文件夹被删除。

有没有可能从这个恢复而不重新安装操作系统?

我在想,我可以使用相同的操作系统和体系结构(Ubuntu Server 11.10 alpha版本,x86)来安装虚拟机,并安装我在服务器上安装的所有软件包,然后复制/bin文件夹。

这会工作吗? 我刚开始过得好吗?

一般来说,我倾向于重新安装(从绝对应该有的备份)。 但是我觉得这是一种冒险,所以这里有另外一种方法(假设你的系统安装在/target ):

  1. 获取所有安装在/bin文件的列表:

     grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist 

    (在我的Debian Squeeze系统上共有34个软件包,几乎所有这些都是核心)

  2. 下载这些软件包(我不能费心去编写脚本,所以只需打包packages.ubuntu.com并将它们下载到/target下的某个地方)。 如果幸运的话,一些软件包可能仍然在/target/var/cache/apt/archives

  3. 对于每个软件包,运行/target/usr/bin/dpkg -x <package> /target 。 我相当肯定dpkg现在都是独立的,不应该在/bin本身调用任何东西。

一旦你已经把系统放回原处,你应该确定并运行一个apt-get --reinstall install <all the packages from step 1> ,因为(因为你正在运行一个预发行版,哪个Sysadmin Cat说生产系统是不行的),你刚刚提取的软件包版本可能与之前系统中的版本不同,你需要确保系统知道到底是什么。

虽然你的策略可能会有效(有很好的机会,但如果一旦你复制bin目录,你可以重新安装系统中的所有软件包),它可能会产生问题,因为你可能会得到不稳定的服务器。

如果发生这种情况,我会重新安装并从日常备份中恢复。 你有一个每日备份 – 一个灾难恢复计划 – 不是吗?

如果您没有灾难恢复计划,我会build议备份所有的configuration文件和要保留的数据,然后重新安装。 这样你就可以确定你会以稳定的服务器结束。

我会尝试创build一个虚拟机,然后将/bin的内容复制到您损坏的机器上。 这应该让你启动和运行。 然后运行

 dpkg --get-selections | awk '{print $1}' | xargs -l1 aptitude reinstall 

这应该重新安装系统上的所有软件包。

最简单的方法,如果你有权访问机器,就是安装文件系统,备份所有的数据(只是作为一个预防措施)。

然后你可以像安装正常一样重新安装ubuntu; 原则上所有的数据(家庭目录,等等和变种)应该仍然在那里。

有一种方法来重新安装所有的软件包,以便重新填充/ bin,但是这相当复杂。

这些文件不见了 虽然您可以尝试“取消删除”文件 – 我不会推荐它。

注意:我不运行Ubuntu(并且暂时还没有使用Debian发行版)。 不过,在过去类似的情况下,我已经做了各种各样的发行恢复。

你最好的行动方式:

  • 从liveCD启动
  • 使用liveCD安装你的系统somplace(比如说/mnt/mint
  • 使用dpkg查询所有安装的软件包:
 #dpkg --admindir = / mnt / mint / var / lib / dpkg -l
  • 使用apt-get将所有这些软件包安装到/ mnt / mint目标中:
 #apt-get -o RootDir = / mnt / mint .... 
  • (替代#1)您可能需要deboostrap /mnt/mint – 不确定
  • (备选scheme2)您可以将liveCD的内容复制到/mnt/mint/bin但是我不知道用于mint的liveCD是否使用了可能会使问题复杂化的busybox – 在这种情况下,替代scheme1似乎更安全。

一般来说,这应该通过你拥有的所有东西的“brute-reinstall”来返回你的文件。 你可以做更多的“聪明”的技巧,并查询所有在/ bin中删除二进制文件的软件包