Как восстановить поврежденную файловую систему FAT32

109

Я использую файловую систему FAT32 для своего флеш-накопителя. Это часто имеет повреждения файлов / данных.

В Windows я использовал утилиту сканирования диска для исправления файловых систем FAT32 / NTFS. Как я могу сделать это в Ubuntu?

Chalitha
источник
3
Вы безопасно выбрасываете?
ζ--

Ответы:

125

Попробуйте ввести следующую команду в терминале Linux:

sudo dosfsck -w -r -l -a -v -t /dev/sdc1

sdc1 - это обычно ваш флеш- накопитель. Вы можете найти свой флеш-накопитель, набрав mount в терминале. Это где-то внутри. Если эта команда занимает слишком много времени, избегайте использования ключа -t .

  • -w означает запись на диск немедленно.
  • -rозначает сделать проверку диска в интерактивном режиме (спросить вас, что делать при возникновении ошибок). В новых версиях dosfsck это значение по умолчанию.
  • -l означает список обработанных имен файлов.
  • -aзначит автоматически исправлять ошибки. Не используйте его, если хотите больше контролировать исправление возможных ошибок.
  • -vозначает многословный режим. Создает немного больше продукции.
  • -t означает пометить нечитаемые кластеры как плохие.

Если вы хотите быть уверены, что не потеряете свои данные, сначала создайте резервную копию исходного устройства.

Нэвин
источник
Какую еще файловую систему эта команда способна исправить, кроме FAT32?
Шахарил Ахмад
@ShaharilAhmad FAT16, который еще может быть использован. Например, я получил мини SD-карту 2 ГБ с FAT16.
Кейки
Но если я не сделаю -t, то в следующий раз он снова попытается использовать плохие кластеры?
Кейки
«В настоящее время поддерживаются только 1 или 2 FAT, а не 0».
Аарон Франке
не использую -a, но я не понимаю, как ответить на половину вопросов, которые мне задают!
Майкл
51

Вы можете попробовать Dosfsck, который является компонентом dosfstools.

Для этого введите в терминале:

sudo apt-get install dosfstools

Чтобы использовать Dosfsck , вы должны указать желаемый адрес устройства (например, / dev / sdb1, / dev / sdb2 или другое устройство.).

Чтобы узнать адрес вашего устройства, откройте терминал (CTRL + ALT + T), затем выполните следующую команду:

mount

Если ваш раздел, например, / dev / sdb1, то сначала размонтируйте его, выполнив следующую команду:

sudo umount /dev/sdb1

Теперь вы можете проверить и восстановить раздел, выполнив следующую команду:

sudo dosfsck -t -a -w /dev/sdb1

Надеюсь это поможет.

Примечание:

Если вы получили следующую ошибку, когда ваш USB-накопитель не распознается:

Error: Buffer I/O error on device sdb1

Запустите эту команду:

dmesg|tail

Если вывод:

end_request: I/O error, dev sdb1, sector 0
Buffer I/O error on device sdb1, logical block 0

Запустите эту команду:

sudo dosfsck -t -a /dev/sdb1

Конечно, вы должны изменить адрес устройства в соответствии с вашими потребностями, как я написал выше.

Октавио Филипе Гонсалвес
источник
в 13.04 кажется, что umount работает и без sudo
giuspen
Я всегда сталкивался с проблемой, что, если внешний жесткий диск или флеш-накопитель был неправильно отсоединен во время выполнения операций с ним, разрешения сойдут с ума, сделав устройство практически бесполезным. Ваш ответ кажется мне посланным Богом; спасибо большое мужик!
Альфредо Эрнандес
6

Также попробуйте:

fsck.vfat -r /dev/sdXn
gavenkoa
источник
4

Dosfsck шпаргалка

Эти примеры будут использовать FAT32 и / dev / sdc1

fsck.vfat -n /dev/sdc1 - простая неинтерактивная проверка только для чтения

fsck.vfat -a /dev/sdc1 - проверяет файловую систему и исправляет неинтерактивно. Наименее разрушительный подход всегда используется.

fsck.vfat -r /dev/sdc1 - интерактивный ремонт. Пользователь всегда получает запрос, когда существует более одного подхода к решению проблемы.

fsck.vfat -l -v -a -t /dev/sdc1 - очень подробный способ проверки и исправления файловой системы неинтерактивно. Параметр -t помечает нечитаемые кластеры как плохие, что делает их недоступными для вновь создаваемых файлов и каталогов.

m3asmi
источник