意外删除了 /usr 目录

意外删除了 /usr 目录

我意外删除了/usrUbuntu 16.04 与 Windows 8 双启动系统中的目录。

现在我无法通过 Ubuntu 操作系统启动我的电脑。请推荐一些东西让我可以启动我的电脑。

答案1

/usr是 GNU/Linux 系统中非常重要的路径,它包含许多(必要的)二进制文件、库、源代码、共享内容等。

它是系统中最大的部分:

5.6G    /usr
0       /proc
37K     /root
80M     /boot
0       /sys
423M    /lib
8.0K    /mnt
68K     /tmp
4.0K    /lib64
14M     /sbin
712M    /var
12M     /bin
1.2M    /dev

我的 Ubuntu 机器上安装了 2097 个软件包,其中 2019 个软件包的文件安装在/usr目录中。

因此,确实不值得花时间尝试重新安装所有这些软件包来解决问题,因为这在某种程度上接近于重新安装整个系统。

我对这个问题有一个答案:“意外删除了 /bin。如何恢复?“您也可以将它用于这种情况。

为了简单地重新安装软件包,您必须chroot进入损坏的系统,创建一个临时文件/usr,获取所有安装了文件的软件包的列表/usrdpkg -S /usr然后重新安装它们或提取并复制必要的文件。

您还可以做的另一件事是使用 testdisk,您可能能够带来/usr快速恢复,这里是一步一步的指南。

不过我建议您备份文件并重新安装 Ubuntu。

答案2

立即关闭系统以避免覆盖以前的目录内容/usr。完成此操作后,准备一个实时启动的 Linux 发行版,任何一个现代 Linux 发行版都可以。我更喜欢使用 Kali Sana 来执行此操作 - 因为库存发行版具有我们恢复过程所需的软件包。

完成准备工作后,将实时启动闪存驱动器插入损坏的盒子并从闪存驱动器启动。现在您可以继续恢复。请注意,这不是一种万无一失的方法。坦率地说,我从未遇到过每次都能奏效的方法。

由于包含已删除目录的分区/usr很可能具有 ext3 或 ext4 文件系统(假设系统是 Ubuntu 16.04),因此我们要实现的第一个实用程序是extundelete。如果您默认安装了该软件包,则可以直接跳到恢复。但是,如果您没有安装该软件包,请通过以下方式安装它

sudo apt-get update
sudo apt-get install extundelete

安装软件包后,您现在需要找到包含已删除/usr目录的分区的名称。找到此分区名称后,为了便于解释,我将假设已删除的目录位于/dev/sda1

1.extundelete

首先,您需要将当前工作目录更改为具有足够可用空间来容纳恢复 /usr目录的分区上的目录。要找到具有足够可用空间的目录,请使用该df -h命令。

df -h 的输出

典型/usr目录的大小接近 10 GB,因此请选择至少有这么多可用空间的分区。也许您可以使用 Windows 8 分区。但在使用该分区之前,您必须挂载它。由于 Windows 8 操作系统很可能位于 NTFS 分区上,因此请使用以下命令挂载它 - 这里我假设 Windows 8 NTFS 分区的分区名称为/dev/sda3

sudo mkdir /mnt/windows_8
sudo mount -t ntfs /dev/sda3 /mnt/windows_8

然后将当前工作目录更改为/mnt/windows_8cd /mnt/windows_8现在更改为 root shellsudo -s并输入您的 sudo 密码。

最终的恢复按以下方式完成。extundelete --restore-directory /usr /dev/sda1如果此方法有效,则当前工作目录中将有一个名为的子目录,RECOVERED_FILES其中包含恢复的文件,即目录/usr及其内容。

2.testdisk

这更具交互性,并且对于新删除的文件和目录非常有效 - 并且具有与几乎所有普遍存在的文件系统和分区体系结构配合使用的额外好处。同样,如果您的发行版中已经有该软件包,请继续阅读本文的恢复部分。但是,如果没有,请通过 进行安装sudo apt-get install testdisk。恢复过程的第一步是为恢复的文件和目录创建输出目录。为此,请使用

mkdir /mnt/windows_8/REC

然后在 root shell 中,以以下身份打开 testdisk:

sudo testdisk /dev/sda1

这将打开一个交互式 CLI 窗口。按 Enter 键Proceed。然后选择None将磁盘声明为未分区媒体。按 Enter 键移至下一页。选择Advanced。然后按突出显示List并按Enter。这将列出分区的内容/dev/sda1,您可以按照屏幕底部和顶部的帮助信息浏览程序窗口,并轻松恢复文件。在 testdisk 中,已删除的文件和目录以红色显示。使用您之前创建的目录(即/mnt/windows_8/REC输出恢复的文件)。

1

2

3

4

这两种方法对于刚删除的分区和文件系统都更有效。在无意中删除文件或系统后,等待关闭系统的时间越长,文件/目录永久丢失的可能性就越大。

答案3

今天,当我忽略以 root 身份运行 caja 的警告时,我愚蠢地意外删除了整个 /usr 文件夹!

我真的不想重新安装,我发现它仍然在 /home/$USER/.local/share/Trash/files 中(但由于 sudo 已经消失,因此无法修复它)。

我设法通过从 Lubuntu live USB 磁盘启动,然后将其从垃圾中复制回应在的位置来恢复它。我以为我必须先安装磁盘,但甚至不必这样做 - /dev/sda1 已在 /media/lubuntu 中以一个较长的临时名称安装

相关内容