How to repair a corrupted FAT32 file system
Try typing the following command in the Linux terminal:
sudo dosfsck -w -r -l -a -v -t /dev/sdc1
sdc1 is usually your pen drive. You can find your pen drive by typing mount in terminal. It's somewhere inside. If that command takes too much time for you, avoid -t switch.
-w
means write to disk immediately.-r
means to do disk check interactively (ask you what to do to when encountering errors). On newer versions of dosfsck this is the default.-l
means to list the filenames processed.-a
means automatically fix errors. Do not use it, if You want to have more control over fixing possible errors.-v
means verbose mode. Generates slightly more output.-t
means mark unreadable clusters as bad.
If you want to be sure not to lose your data, create a backup of the source device first.
You can try Dosfsck, which is a component of dosfstools.
For this, type in terminal:
sudo apt-get install dosfstools
To use Dosfsck, you have to indicate the device address you want (Ex. /dev/sdb1, /dev/sdb2, or other device.).
To know your device address, open the terminal (CTRL+ALT+T), then run this command:
mount
If your partition is /dev/sdb1, for example, then unmount it first by running this command:
sudo umount /dev/sdb1
Now you can verify and repair your partition by running this command:
sudo dosfsck -t -a -w /dev/sdb1
Hope this helps.
Note:
if you receive the following error, when your USB flash drive is not recognized:
Error: Buffer I/O error on device sdb1
Run this command:
dmesg|tail
If the output is:
end_request: I/O error, dev sdb1, sector 0
Buffer I/O error on device sdb1, logical block 0
Run this command:
sudo dosfsck -t -a /dev/sdb1
Of course, you must change the device address to your needs, like i wrote above.
Also try:
fsck.vfat -r /dev/sdXn