运行 rm -rf /* 后进行修复

我在我的Ubuntu 10.10上不小心运行了rm -rf /*命令,但很快取消了它。我没有使用root权限,也没有用sudo,但是很多文件被删除了。系统变得不太响应,我不确定该如何修复它。例如,我重新安装了firefox,解决了许多firefox的问题,但右键点击非常迟钝。Deluge一直将CPU使用率(1个核心)拉到100%。Shutter在响应性方面也有些奇怪。
有什么办法可以修复所有问题吗?比如重新安装每个已安装的软件包和Ubuntu文件?

4我建议先备份数据,然后进行全新安装。:S - shroff
3你怎么会“不小心”运行这样的命令呢? - Ward Muylaert
@shroff 那是我最后的选择!我正试图避免这种情况发生,因为那意味着要从Dropbox重新下载几GB的数据,更不用说重新安装所需的时间了。 - Ashfame
@Ward我正在编辑路径,不小心使其运行了。 - Ashfame
在Ubuntu 10.10中,你不能运行"rm -rf /"命令。如果你尝试运行它,会收到一个警告提示... - Alin Andrei
1@Alin Andrei 在我这里,10.10上的rm -rf /*很顺利地执行了。 - Ashfame
4个回答

我不是root用户,也没有使用sudo命令,但我的很多文件被删除了。
你很可能只是删除了个人设置。创建一个新用户并以该用户登录,检查一下是否一切正常。应该没问题的。
如果是这种情况,你可以将文件和未丢失的配置文件移动到新用户文件夹中。

我同意。该命令可能已删除了您的/home目录中的文件,因为/*会扩展为/bin /boot /dev /etc /file.img /home /initrd.img /initrd.img.old /lib ... - arrange
是的,所有的设置和配置都不见了。我不明白为什么重新安装Firefox和Deluge后问题还是存在。整个系统的响应速度不及之前这一事件发生之前那样迅捷。 - Ashfame
安排我的文件深入到我家的几个目录下也被删除了,我不记得我是否使用了-r开关。 - Ashfame

你可以使用这个脚本重新安装所有的软件包,它有点不太正规,因为我在没有破解 Python 的情况下找不到 dpkg 控制机制。
#!/bin/bash

for PACKAGE in `dpkg --get-selections | grep install | awk '{ print $1; }'`; do
  sudo apt-get --reinstall install $PACKAGE
done

将其保存到文件reinstall.sh中,然后通过在命令行中运行bash reinstall.sh来执行。这个过程可能需要一些时间,但它会重新安装所有内容。

如果我要重新安装,我可以再次安装这些东西。它们并不多。虽然我理解你的想法。 - Ashfame

你可以备份所有已安装的软件包,然后进行清洁安装,最后进行恢复过程。
首先,在预先安装了所有应用程序的计算机上,获取已安装软件包列表,并将输出重定向到一个名为packages.txt的文件中。将此软件包列表保存在某个地方,以便在恢复过程中使用。
sudo dpkg --get-selections > packages.txt

要从您的列表中恢复所有应用程序,您必须非常仔细地按照三个步骤进行操作。
sudo dpkg --clear-selections 
sudo dpkg --set-selections < packages.txt 
sudo aptitude install

你将被提示安装列表中的所有新应用程序。 这个过程允许你创建一个Ubuntu干净安装后所有应用程序的基线。比如说,假设你想要删除自干净安装以来安装的任何应用程序,只需执行相同的过程,那些列表中未定义的软件包将会被移除。
sudo dpkg --get-selections > clean-install-package-list.txt
sudo dpkg --clear-selections
sudo dpkg --set-selections < clean-install-package-list.txt 
sudo aptitude install

首先,--clear-selections 命令将当前安装的所有软件包标记为 deinstall 状态。当您使用 --set-selections 恢复应用程序列表时,只有列表中省略的软件包将保持在 deinstall 状态。Aptitude 将遵守 deinstall 状态并删除额外的软件包,只保留列表中的软件包。

1这可能就是我在寻找的东西。如果我理解正确的话,--clear-selections 标记了那些不需要的软件包,并且应该被移除,但是我们导入了我们的软件包列表,所以几乎与我们导出列表时的配置相同,被标记为要安装。一些软件包已经存在(之前标记为要移除的现在又标记为需要它们),然后 sudo aptitude install 最终执行待处理的操作,即需要哪些新的软件包。对吗? - Ashfame

我通过重新安装解决了问题。
正如@d4n13l建议的那样,我的系统在响应速度上受到了影响,不仅仅是我的文件丢失了。
我觉得@Martin的方法是在重新安装后安装之前的软件包时应该采取的方法。我只有很少的软件包,所以我从Ubuntu软件中心重新安装了它们。
感谢大家对此事的关注。 :)

你可以将你的答案标记为被接受的答案,因为那是你最终做出的决定;然而,如果Martin的回答对你有帮助,请给他点赞! - Jorge Castro
好的,我已将我的答案标记为被接受的答案,因为我最终做到了那一点。但是Martin和hhlp的回答对于有需要的人来说会更有帮助。 - Ashfame