如何在 Linux 下恢复 Fat32 文件系统

如何在 Linux 下恢复 Fat32 文件系统

这是发生的事情:

我使用笔记本电脑并访问了 USB 记忆棒上的一些数据。然后我关闭笔记本电脑,使系统进入睡眠模式。 USB 棒仍然插着。笔记本电脑完全进入睡眠状态后,我拔出了 USB 棒(灯熄灭了,所以它一定是断电了)。今天我在没有 USB 记忆棒的情况下唤醒了笔记本电脑。现在,当我重新插入它时,文件系统将不会自动安装。

我尝试手动安装它:

chi mnt # mount -t vfat /dev/disk/by-id/usb-JetFlash_Transcend_4GB_QTMFKJQQ-0\:0-part1 usb/
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       Manchmal liefert das Syslog wertvolle Informationen – versuchen
       Sie  dmesg | tail  oder so

做了一个dmesg | tail我发现以下内容:

FAT-fs (sdb1): bogus number of FAT structure
FAT-fs (sdb1): Can't find a valid FAT filesystem

所以我尝试fsck.vfat在棒的分区上做,看看它是否可以以某种方式修复它:

chi mnt # fsck.vfat /dev/disk/by-id/usb-JetFlash_Transcend_4GB_QTMFKJQQ-0\:0-part1 
dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
Cluster size is zero.

有没有办法使用 Linux 工具修复棒上的文件系统?我正在使用gentoo。

另外,这种行为不应该被视为错误或至少是危险的吗?对我来说,在系统处于睡眠模式时移除操纵杆听起来像是一个常见的用例。另外,如果您删除它,在重新打开系统之前很容易忘记将其放回去,而且我认为这不应该像这样杀死您的文件系统。我愿意报告此错误,但我不知道哪个邮件列表/错误跟踪器是正确的。

编辑:

我在网上找到了一些建议。但是,如果我尝试使用:

dd if=/dev/disk/by-id/usb-JetFlash_Transcend_4GB_QTMFKJQQ-0\:0-part1 of=sector6.bin bs=512 count=1 skip=6 conv=noerror,sync
dd if=sector6.bin of=/dev/disk/by-id/usb-JetFlash_Transcend_4GB_QTMFKJQQ-0\:0-part1 bs=512 count=1 conv=noerror,sync,notrunc

之后我仍然遇到同样的错误。我还尝试CHKDSK F: \R \T按照一些帖子的建议在 Windows 下使用,但该工具仅将驱动器报告为RAW因此不受支持。

答案1

在对 U 盘进行任何操作之前,您应该为其制作一个映像:

dd bs=4k of=stick.img if=/dev/disk/by-id/usb-JetFlash_Transcend_4GB_QTMFKJQQ-0\:0

然后你把你的棍子安全地放在一边,并使用stick.img文件来进行你的摆弄,而不是破坏更多的数据。

里面有重要文件吗?查看http://www.cgsecurity.org/wiki/PhotoRec用于恢复工具。与名称所暗示的不同,它不仅仅恢复照片。

恢复数据后,请在 U 盘上创建一个新的文件系统,因为旧的文件系统将无法再信任您的数据。 (mkfs.vfat)

相关内容