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

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

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

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

不重新安装操作系统可以恢复吗?

我正在考虑设置一个具有相同操作系统和架构(Ubuntu Server 11.10 alpha 版本,x86)的虚拟机并安装我在服务器上安装的所有软件包,然后只需复制该/bin文件夹即可。

这有用吗?我是不是最好重新开始?

答案1

总体而言,我倾向于重新安装(从您绝对应该拥有的备份中)。但我感觉有点儿太老套了,所以这里有另一种方法(假设您的系统安装在 下/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>,因为(由于您正在运行预发布版本,系统管理员 Cat 表示这在生产系统上是禁忌)您刚刚提取的软件包的版本可能与系统之前的不同,并且您需要确保系统确切地知道什么是什么。

答案2

虽然您的策略可能有效(很有可能有效,如果您复制回 bin 目录,然后对系统中的所有软件包执行 apt-get 重新安装,则成功率会更高),但它可能会在将来产生问题,因为您可能会得到一个不稳定的服务器。

如果这种情况发生在我身上,我会重新安装并从每日备份中恢复。您有每日备份 - 灾难恢复计划 - 不是吗?

如果您没有灾难恢复计划,我建议您备份所有配置文件和要保留的数据,然后重新安装。这样您就可以确保最终再次拥有稳定的服务器。

答案3

我会尝试创建一个虚拟机,然后将内容复制/bin到损坏的机器上。这样应该就可以启动并运行了。然后运行

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

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

答案4

文件不见了。虽然你可以尝试“恢复”文件 - 但我不建议这么做。

注意:我没有运行 Ubuntu(并且有一段时间没有使用 Debian 发行版了)。但是,我过去曾执行过各种发行版恢复,所有恢复都遵循类似的方案。

你的最佳行动方案是:

  • 从 liveCD 启动
  • 使用 liveCD 将系统挂载到某个地方(例如/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- 不确定
  • (替代方案 #2)您可以将/binliveCD 的内容复制过去,/mnt/mint/bin但我不知道 mint 的 liveCD 是否使用 busybox,这可能会使事情复杂化 - 在这种情况下,替代方案 #1 似乎更安全。

通常,这应该会通过“强力重新安装”您拥有的所有内容来返回您的文件。您可以做一些更“聪明”的技巧,并查询在 /bin 中放置二进制文件的所有软件包

相关内容