如何在 Linux 下恢復 Fat32 檔案系統

如何在 Linux 下恢復 Fat32 檔案系統

這是發生的事情:

我使用筆記型電腦並存取了 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

在對 USB 隨身碟進行任何操作之前,您應該為其製作一個映像:

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用於恢復工具。與名稱所暗示的不同,它不僅僅恢復照片。

恢復資料後,請在 USB 隨身碟上建立新的檔案系統,因為舊的檔案系統將無法再信任您的資料。 (mkfs.vfat)

相關內容