我有一台装有 Windows 7 的计算机,我在另一个分区上安装了 lubuntu 14.04(我想我首先缩小了 Windows NTFS 分区)。我是这样安装lubuntu的:
-> NTFS boot
-> NTFS windows 7
-> extended partition
-> "/" (ext4)
-> "/home" (ext4)
-> MAYBE there was a data partition in ext4 (I don't remember, not my computer)
-> swap
安装后,当您在 Windows 上启动(在 GRUB 中)时,它不起作用并且每次都会重新启动。
今天我决定重新安装 Windows 7,所以我做了以下事情:
- 我在 lubuntu 上启动,安装了 gparted 并删除了两个 Windows 分区。
- 我制作了一个大的NTFS分区,打算在上面安装Windows 7。
- 我安装的是Windows 7
- 它删除了我的“/”和“/home”分区(但它们没有重新格式化)
我什至不知道为什么这样做,也许是因为我应该保持 Windows 分区不格式化,并创建擦除 linux 的启动分区。说实话,我很惊讶。
那么现在,有两个问题:
I) 如何检索“/home”中的所有数据?我想它现在还没有被删除,因为到目前为止我还没有在这些分区上写任何东西。
II) 是什么导致了这起事故?
答案1
任何此类数据恢复的第一步是制作驱动器的映像(逐位)副本。然后,只处理副本(对于最终的偏执狂,制作第二个副本并仅处理该副本)。
复制整个磁盘相当容易。假设/dev/sda
是要复制的磁盘,并且您想将磁盘映像放在/media/backup/sda-image
,其中任何一个都可以工作(pv
如果您安装了它,将给出进度条、预计到达时间等)。请注意,它们都需要 root(因为通常需要 root 才能读取/dev/sda
)——sudo
如果需要,请放在前面:
pv -pterba /dev/sda > /media/backup/sda-image # or
dd if=/dev/sda of=/media/backup/sda-image bs=4096 # or
cp /dev/sda /media/backup/sda-image # yep, even cp works
您可能设法删除分区并重新分配它们之前分配给新的“一大 NTFS”分区的扇区。如果是这样,您很可能会丢失数据,因为 NTFS 将(至少)在您的 ext4 分区之上写入文件系统元数据。更糟糕的是,您还安装了 Windows,因此一堆内容写入了该文件系统,这也可能覆盖了您的数据。如果发生这种情况,恢复可能会更加困难。如果是这种情况,您甚至应该避免启动该 Windows 副本。
基本方法是尝试重新发现哪些扇区是 ext4 文件系统,然后您可以使用它来重新创建分区表,或者至少将其映射到环回设备(使用losetup
)并复制数据。测试盘是一个可以为您执行此操作的实用程序。我建议在另一个系统的磁盘副本上运行它,或者通过 Live CD/DVD 运行它。
我们有一堆关于测试盘的问题你可能想参考一下。我还有一个答案解释了如何不使用 testdisk 手动搜索 ext4 分区如果 testdisk 找不到它,这可能很有用。
一旦恢复了分区表,您应该e2fsck -f -n
在分区上运行以查看元数据受到了多少损坏;如果很小,您可以取下-n
并修复它。然后安装它并验证您的数据。如果损坏很严重,您可能需要在 fsck 之前尝试复制数据(将其安装为只读),然后再尝试复制数据,以最大限度地恢复数据量。