我意外地使用以下命令将我的 USB 驱动器(ext4 格式)格式化为 exfat
mkfs.exfat /dev/sdb1
我尝试使用 testdisk 恢复它。它能够检测到文件系统,但无法读取它并警告我文件系统已损坏。
因此尝试使用sudo fsck.ext4 /dev/sdb1
,它将修复损坏的文件系统。但尝试挂载时,我收到以下错误:
arun@lenovo-pc:~/Desktop/testdisk-7.0$ sudo mount /dev/sdb1 /media/usb2
mount: /dev/sdb1: more filesystems detected. This should not happen,
use -t <type> to explicitly specify the filesystem type or
use wipefs(8) to clean up the device.
arun@lenovo-pc:~/Desktop/testdisk-7.0$
我尝试了一下,sudo mount -t ext4 /dev/sdb1 /media/usb2
它能够正确安装,并且我能够看到丢失的数据。
但我的问题是为什么 fsck 无法正确修复第一个扇区。有没有办法正确修复第一个扇区,以正确纠正 mkfs.exfat 命令造成的损坏,以便我可以直接挂载而不会出现任何问题?
答案1
fsck.ext4
是一款用于检查 EXT4 文件系统在“正常”使用过程中是否发生错误的工具,例如电源故障或内核崩溃导致数据部分写入。重新格式化 EXT4 文件系统所在的分区实际上并不是此类错误的fsck
目的。
我想说,到目前为止,恢复文件系统最简单、最安全的方法是先通过明确指定文件系统类型(如您所述)来挂载它,然后将文件复制到另一个文件系统。然后正确地将 USB 驱动器重新格式化为 EXT4(请参阅man mkfs.ext4
)并将文件复制回来。修复现有文件系统并非不可能,但造成更大损害却极其容易。
答案2
这显然不是一个真正的问题。看来你唯一的问题是无法自动检测文件系统类型,而你可以通过在你的 中放置正确的条目/etc/fstab
或像你一样在命令行中指定它来轻松解决这个问题。
请注意,通过 UUID 来引用分区更为实用,无论您如何连接设备,也不管连接的顺序如何,UUID 都保持不变。
在最坏的情况下,只需备份分区内容和另一个驱动器,重新格式化,然后恢复备份。