修复 exfat 磁盘的已清除引导扇区(及更多)

修复 exfat 磁盘的已清除引导扇区(及更多)

我愚蠢地曾经dd if=/dev/zero of=/dev/sdb bs=512打算做/dev/sdc。

我在 /dev/sdb 上有一个 1TB 的 USB 驱动器。它被格式化为 exfat。

这两个分区在 /proc/partitions 中显示为:

   8       17     131072 sdb1
   8       18  976629760 sdb2

我没有重新启动或者移除驱动器。

我能否以某种方式重新发明引导扇区的 512 字节?

我可以使用什么工具/方法来做这件事?因为它是 exfat,所以会出现奇怪的 Linux 问题。

安装显示:

fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
/dev/sdb2 on /media/keith/tera type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)

我完蛋了吗?testdisk 或 gparted 能帮上忙吗?天哪,只有区区 512 字节吧?

我刚刚意识到没有 count=1,所以它一直在写入,直到我按下 Ctrl-C。这对我来说是立即的,但对于处理器来说......好吧......哎哟!

我刚刚在终端历史记录中发现了这一点:

Disk /dev/sdb: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: F3A19FB9-E01F-40BC-ADFE-4F97133EA6CF

Device      Start        End    Sectors   Size Type
/dev/sdb1      34     262177     262144   128M Microsoft reserved
/dev/sdb2  264192 1953523711 1953259520 931.4G Microsoft basic data

我可以通过 testdisk 使用它来重建分区吗?Testdisk 得出了以下结论:

Disk /dev/sdb - 1000 GB / 931 GiB - CHS 121601 255 63
     Partition               Start        End    Size in sectors
>D MS Data                       63 1953520127 1953520065
 D MS Data               1387348323 1387351202       2880 [SPINRITE V6]
 D MS Data               1387643135 1387646014       2880 [SPINRITE V6]

Structure: Ok.  Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition characteristics:
                P=Primary  D=Deleted
Keys A: add partition, L: load backup, T: change type, P: list files,
     Enter: to continue
NTFS found using backup sector, blocksize=4096, 1000 GB / 931 GiB

但是 Linux 可以重新创建正确的分区类型吗?我似乎记得最初在 Windows 上格式化此驱动器。

答案1

在尝试恢复之前,请尝试从 Linux 安装中挤出 sdb 的分区信息,这些信息可能仍在 RAM 中。也许 lsblk 是一个候选。我无法告诉您如何操作,因为我只使用 Linux 进行恢复。需要的是 sdb 的第一个分区(sdb1)的起始位置,因为您的 sdb 驱动器可能被分区为一个主分区。如果您自己对驱动器进行分区和格式化,您应该能够使用第二个驱动器(例如您部分覆盖的驱动器)重现该位置。如果不行,请询问制造商。

我可以以某种方式重新发明引导扇区的 512 字节吗?.. testdisk 或 gparted 可以帮忙吗?

您可以运行 Testdisk,它应该会找到备份引导扇区。根据其中的信息,您可以计算引导扇区到 FAT 和根目录的距离。使用十六进制编辑器跟踪从零开始的破坏痕迹。一旦您碰到不再为零的扇区,您就会知道您可以将驱动器覆盖到多远。

通过结合这两条信息,您可以猜测是否已将 FAT 和根目录清零。

如果您覆盖了 FAT 和根目录,那么在您的驱动器进行碎片整理后,Photorec 和其他程序将很难恢复。

其他第三方工具可能至少能够重建子目录中的文件名,但一旦数据碎片化并且文件长度超过一个簇,就无法重建完整的数据内容。

附录 2020.5.25 19:34 欧洲中部时间

使用 Testdisk 中的“p”键查看 testdisk 的建议分区。您可能需要运行额外的深度搜索。如果您的磁盘布局的终端历史记录结果与您记得的一致,则可以使用 Testdisk 手动重建您的布局。

如果“p”键不起作用,请使用 Photorec 或其他第三方软件。Testdisk 仅适用于磁盘上的某些轻微损坏。它适合修复分区方案。当所有元数据都丢失时,Photorec 是最后的手段。第三方软件填补了应用程序漏洞。

我可以通过 testdisk 使用它来重建分区吗?

我不知道你之前的磁盘布局是怎样的。你知道,你必须自己决定。

但是 Linux 可以重新创建正确的分区类型吗?

如果 parted 或 Gparted 失败,Testdisk 应该能够解决。

相关内容