意外地用 mv 弄乱了我的文件系统 - Grub Rescue>

意外地用 mv 弄乱了我的文件系统 - Grub Rescue>

首先我要说的是,我是一个非常缺乏经验的普通用户。昨晚,我试图将目录下的所有文件移动到另一个位置,但却不小心做了以下事情:

mv stuff /* /home/user/Downloads

我通过 SSH 连接到远程虚拟机,从该命令开始,一切都开始崩溃。终端上的任何命令都无法识别,ls 和 cd 都无法识别,什么都没有,控制台左侧通常会显示类似以下内容的内容

迪米特里斯#>_

已经转向

#> _

我重启了机器,现在它启动到

grub 救援>_

第一张照片

我试过了ls,我得到了三个hd()

hd(0), hd(0,msdos1), fd(0)

  • 第一个有一个无法识别的文件系统(可能是因为我将所有内容都移动到了 /home/user/Downloads,所以正常的 hd 被弄乱了)
  • 第二个有一些目录: 第二张照片
  • 第三个的第一个扇区无法读取。

我可以做些什么来恢复上次更改吗?或者其他什么?或者这是一个致命的错误?

我很乐意销毁虚拟机并再次创建,但我不想丢失我的 /var/www/ 目录。

答案1

基本上,由于您移动了启动所需的所有文件(例如... /boot),您当前的计算机无法启动。但是,其他计算机可以。

由于您知道做了什么,因此您可能能够恢复计算机的先前状态。配置您的虚拟机以在 Ubuntu Live ISO 上启动,选择尝试 Ubuntu并手动挂载“混乱”的分区:

# Create mount points (home only if necessary).
sudo mkdir /mount/old /mount/old/home

# Mount the former / partition on /mount/old.
sudo mount /mount/old /dev/sdaX # sdaX being your destroyed / partition.

# Mount the former /home partition (if you have one) on /mount/old/home.
sudo mount /mount/old/home /dev/sdaY # sdaY being your former /home partition, if necessary.

如果您想获取有关分区的更多信息,请键入sudo fdisk -l。这将为您提供虚拟驱动器的分区方案。尝试根据文件系统和大小识别您的分区。在大多数情况下通常在某些情况下,该/分区是一个大ext4分区。如果您的/home分区与 共享同一个分区/,则从以下命令中将其删除。

/mount/old从那里,尝试在和中还原更改/mount/old/home,然后执行umount这些更改,并在虚拟驱动器上重新启动。在umount执行之前,您还可以转到/mount/old/var/www/mount/old/home/user/Downloads/var/www以恢复数据。

# Find all files owned by root in the former Downloads directory, and move them back to the root (mounted on /mount/old)
sudo find /mount/old/home/user/Downloads -type d -maxdepth 1 -user root -exec mv {} /mount/old \;

# Un-mount everything.
sudo umount /mount/old/home /mount/old

# Power off! Remove the ISO and power the machine back on.
sudo poweroff

这似乎是最明显的解决方案,但我不知道 GRUB 的配置是否能够处理最近的更改。你仍然可以尝试一下!

答案2

我认为你的虚拟机上的 Ubuntu 是没用的,你最好重新安装 Ubuntu。但在这之前,你可以用另一种方式读取虚拟机的硬盘。

这里关联了解如何操作,并查看您的文件。

“或者您可以创建一个全新的 Window VM 并将 vmdk 作为第二个磁盘添加其中。”

我认为您正在寻找的文件夹:/var/www/ 它位于 /home/user/Downloads 上

答案3

我刚刚遇到了类似的问题!我能够修复它。我在使用 Ubuntu 16.04 LTS。

我所做的是:sudo mv / /opt当我在 /Downloads 目录中时。但它可以像将我的所有根文件夹移动到 /opt/* 一样工作,但由于文件繁忙等原因,有一些例外。

紧接着,我开始遇到 UI 和 cmd 中的故障,等等>ls 'ls' comand is not defined

有帮助的是从新的 Ubuntu USB 启动,选择try Ubuntu w/o isntallation,转到终端,然后/media/<YOUR_HARD_DRIVE_ID>然后类似sudo mv /media/<YOUR_HARD_DRIVE_ID>/opt/* /media/<YOUR_HARD_DRIVE_ID>/

希望有帮助

相关内容