我错误地执行了这个命令:
sudo sh
进而:
rm -r ~
我关闭了终端,但仍然有很多文件不见了,而且它们不在垃圾箱里。从那时起我就没执行过任何命令,所以我能以某种方式恢复我之前的命令吗?有人,请帮帮我!
答案1
不幸的是,一般来说,这是不可逆的。只有当您使用图形用户界面删除文件时,文件才会被移到垃圾箱。命令行的目的是要强大,但能力越大,责任越大 :-)
编辑:正如一位评论员正确指出的那样,建议启动 liveCD 并从那里使用 extundelete。这样,实际系统就不会受到影响。
在阅读本答案的其余部分之前,请先阅读本文。
不过,有一个恢复删除实用程序(但不保证能起作用)您可以尝试一下。
首先,检查您是否有 ext3 或 ext4 文件系统(从终端运行此命令):
mount
您应该会看到几行,其中包括以下内容:
/dev/sda6 on /home type ext4 (rw)
(如果您的家位于单独的分区)或
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
(如果您的主目录位于根分区上)。如果您有任何疑问,请在此处发布 mount 命令的完整输出。
接下来,安装 extundelete,可以使用 Ubuntu 软件中心或从命令行安装:
sudo apt-get install extundelete
坏消息是,从现在开始情况会变得更加复杂。此外,您将以 root 身份从命令行工作,拥有彻底破坏系统的权力,因此请小心输入的内容。
首先,您不应该在已安装的分区上运行 extundelete,并且您需要知道您的 home 位于哪个设备上。如果您的 home 位于单独的分区上(例如,/dev/sda6,如上例所示),请以安全模式启动 Ubuntu。在启动过程中按 shift,当出现菜单时,选择恢复模式,然后“进入 root 命令提示符”。
然后,您需要重新挂载可写的根文件系统:
mount -o rw,remount /
然后,运行
extundelete /dev/sda6 --restore-all
仍然可以保存的文件将被恢复,并且 extundelete 将向您显示存储它们的位置。
不幸的是,根据我的经验,extundelete 运行的次数与不运行的次数一样多。你经常会遇到“分段错误”。在这种情况下,你必须下载源代码并自行构建,这应该可以解决问题。
对于未来,请记住这句老话:有两种人:一种人会做正确的备份,另一种人会。使用 Ubuntu 进行备份很容易,所以为什么不这样做呢?