我删除了我的硬盘的分区表。我想格式化另一个,但是不小心格式化错了。然后我还在上面创建了一些新分区。现在,如果可能的话,我想恢复我的旧数据。旧配置如下:
一个带有 Windows 的主 NTFS 分区,以及一个带有四个逻辑分区的辅助分区:一个交换分区和三个 XFS 分区(两个用于 Ubuntu 和 OpenSuSE,一个用于两个系统的主分区)。
gpart
这是我在终端中运行时得到的输出:
ubuntu@ubuntu:~$ sudo gpart /dev/sdb
开始扫描...
可能的分区(Windows NT/W2K FS)、大小(39997mb)、偏移量(0mb)
可能的扩展分区偏移量(39997mb)
可能的分区(Linux swap)、大小(8189mb)、偏移量(39997mb)
可能的分区(SGI XFS 文件系统)、大小(40942mb)、偏移量(48187mb)
可能的分区(SGI XFS 文件系统)、大小(40942mb)、偏移量(89149mb)
可能的分区(SGI XFS 文件系统)、大小(175044mb)、偏移量(130112mb)
结束扫描。检查分区...
分区(OS/2 HPFS、NTFS、QNX 或 Advanced UNIX):主
分区(Linux swap 或 Solaris/x86):逻辑
分区(Linux ext2 文件系统):逻辑
分区(Linux ext2 文件系统):孤立逻辑
分区(Linux ext2 文件系统):孤立逻辑
确定。猜测主分区表:
主分区(1)
类型:007(0x07)(OS/2 HPFS、NTFS、QNX 或 Advanced UNIX)
大小:39997mb #s(81915360)s(63-81915422)
chs:(0/1/1)-(1023/254/63)d(0/1/1)-(5098/254/51)r主分区(2)
类型:015(0x0F)(扩展 DOS,LBA)
大小:265245mb #s(543221849)s(81915435-625137283)
chs:(1023/254/63)-(1023/254/63)d(5099/0/1)-(38912/254/2)r主分区(3)
类型:000(0x00)(未使用)
大小:0mb #s(0)s(0-0)
chs:(0/0/0)-(0/0/0)d(0/0/0)-(0/0/0)r主分区(4)
类型:000(0x00)(未使用)
大小:0mb #s(0)s(0-0)
chs:(0/0/0)-(0/0/0)d(0/0/0)-(0/0/0)r
从前八行来看,数据似乎还在……但我不知道如何恢复它们。我有一个大约 500 GB 的免费第二硬盘(格式化的硬盘为 320 GB),可以用于恢复过程。
答案1
gpart -W 不起作用,因为它会写出正在显示的新分区表后前八行 - 实际上是新的分区表。TestDisk 是一种替代方案,它允许您选择要恢复的分区。
答案2
首先,将你的硬盘复制到空闲的硬盘上,我认为最好的选择是阅读 dd 手册页,然后复制光盘
man dd
dd if=/dev/sda of=/dev/sdb
假设 /dev/sda 是包含数据的旧文件,而 /dev/sdb 是新的空文件。
第二,使用 /dev/disk/by-id/* 中的设备。这样你可以避免错误。
第三,删除新创建的分区,以便将找到的分区重写到分区表中。使用 parted 或 fdisk。
第四,阅读所有 gpart mnan 页面,特别是“-W”选项
man gpart
sudo gpart -W /dev/sdb
希望这能有所帮助。但你有备份,不是吗?