我朋友的电脑因为文件系统损坏而崩溃了。但是她需要系统中的文件,因此重新安装不起作用,因为我们仍然有办法恢复文件。
我解决这个问题的方法是从 USB 启动 Helix(Ubuntu 发行版)的实时版本,运行命令dd
以阻止将 Windows 分区复制到外部驱动器,然后使用 foremost 尽可能多地恢复。
无论如何,我试图在互联网上找到该命令,但无济于事。有人知道查看驱动器上所有分区的命令吗?请记住,我正在尝试从 Live Helix CD 查看它。
答案1
简短的回答是?Linux 本身就可以用来做你想做的事情。列出块级设备和分区的最基本命令是lsblk
cat /proc/partitions
但如果你没有安装,你也可以解释输出lsblk
。但也许你需要为此目的寻找合适的 Live CD。这运行时 Live CD看起来效果不错。这个也一样Ubuntu 救援混音 CD. 但是如果你将驱动器本身连接到真正的 Linux 设置。
更长的答案是?我写了一篇关于如何检测连接的块级设备并安装它们的长篇解释,以防您或其他人想要走这条路。我觉得在处理像数据恢复这样棘手的事情时,了解系统工作原理的基本原理总是更好的。
因此,我相信您正在寻找的基本 Linux/Unix 命令是查看设备上的所有分区lsblk
lsblk
; 列出块设备。例如,这是我用于开发和测试的 Ubuntu Linux 虚拟机上的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 31.8G 0 part
├─sandbox--vg-root (dm-0) 252:0 0 27.8G 0 lvm /
└─sandbox--vg-swap_1 (dm-1) 252:1 0 4G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
这可能看起来令人困惑,但如果您明白它向您显示的是设备列表以及设备上的分区,您就可以更轻松地解释正在发生的事情。例如,查看此输出,您可以看到它sda5
上面有两个不同的分区:sandbox--vg-root
/dm-0
和sandbox--vg-swap_1
/ dm-1
。由于sandbox--vg-root
/dm-0
是两个分区中较大的一个,我们可以放心地假设它是主分区。如果我想从sandbox--vg-root
/恢复数据dm-0
,我可以通过运行 mount 命令在 Linux 中挂载它。
现在,假设lsblk
您的 Live CD 上没有安装该工具。那么没问题:然后只需通过运行以下命令直接查看可用分区列表:
cat /proc/partitions
来自我的 Ubuntu Linux 测试虚拟机的示例输出如下:
11 0 1048575 sr0
8 0 33554432 sda
8 1 248832 sda1
8 2 1 sda2
8 5 33302528 sda5
252 0 29106176 dm-0
252 1 4194304 dm-1
dm-0
现在在这种情况下,和并不那么清楚dm-1
,但可以公平地假设它们是您正在寻找的分区,通过推断它们直接跟随sda5
并且的总大小反映了和sda5
的总和。dm-0
dm-1
完成后,我们现在知道我们要挂载sandbox--vg-root
/ dm-0
。在可写的 Linux 环境中,您可以执行以下操作。首先,创建一个要挂载卷的目录;这将~/recover_mount
在您的主目录中创建:
mkdir ~/recover_mount/
然后你可以像这样安装设备~/recover_mount/
:
sudo mount /dev/dm-0 ~/recover_mount/
完成后,如果您运行ls -la ~/recover_mount/
,您将能够轻松访问该驱动器上主分区的所有内容。
但这一切都假设您正在从另一台 Linux 机器上安装 Linux 分区。如果您使用的是 Linux 但想要安装 Windows 分区,则可能会变得更加棘手。在最佳情况下,我们可以假设 Windows 磁盘是 NTFS,因此可以像这样安装它:
sudo mount -t ntfs /dev/dm-0 ~/recover_mount/
注意-t
的设置ntfs
。或者你可能需要将其更改为ntfs-3g
如下形式:
sudo mount -t ntfs-3g /dev/dm-0 ~/recover_mount/
但最重要的是,您的 Linux Live CD 需要支持 NTFS。大多数现代内核默认支持 NTFS。但说实话,如果您真的想在这种情况下恢复数据,最好从 Windows 机器上移除驱动器,并将其连接到一个可以运行的 Linux 系统(而不是 Live CD),然后尝试按照上述方法操作。