Интересно, не записывается ли что-то на диск в нужное время - например, к тому времени, когда вы выключите питание.
Если вы хотите сделать это с помощью теории кодирования, я бы начал с рассмотрения http://en.wikipedia.org/wiki/RAID и http://en.wikipedia.org/wiki/Erasure_code.
Если вы начинаете с обычного кода, вы почти наверняка захотите чередовать код - если вы думаете о секторах как о строках, вы хотите записать свои данные в столбцы, так что потеря одного целого сектора = строки потеряет вас только 1 байт (или 1 бит) в каждом N, где у вас есть N-способ чередования - каждый столбец имеет глубину N строк.
Если это хитрое оборудование - возможно, основная флэш-память слишком часто перезаписывалась (делает ли ваш USB-накопитель http://en.wikipedia.org/wiki/Wear_levelling?), возможно, имеет смысл поставить контрольную сумму в каждом секторе, чтобы вы знали, какие из них повреждены. Если вам вообще не удается что-то написать, вам нужно сделать что-то более хитрое, например, проверить контрольную сумму некоторых метаданных файла, а также сам сектор, чтобы убедиться, что сектора, которые должны были быть перезаписаны, но не выглядят так, как будто они действительны, потому что предыдущее содержимое также имело правильную контрольную сумму.