Все, что нужно, - это перезаписать, очистить, проверить успешность и повторить. Он абсолютно ничего не выясняет, приводит ли перезапись файла к блокам, содержащим исходные данные, которые будут перезаписаны. Это потому, что, не зная нестандартных вещей о базовой файловой системе, она не может.
Таким образом, журналируемые файловые системы не будут перезаписывать исходные блоки на месте, потому что это помешает их правильному восстановлению после ошибок, когда изменение наполовину записано. Если данные заносятся в журнал, то каждый проход уничтожения может быть записан в новое место на диске, и в этом случае ничего не уничтожается.
Файловые системы RAID (в зависимости от режима RAID) могут не перезаписывать все копии оригинальных блоков. Если есть избыточность, вы можете уничтожить один диск, но не другой (или другие), или вы можете обнаружить, что разные проходы влияли на разные диски, так что каждый диск был частично уничтожен.
В любой файловой системе аппаратное обеспечение диска может просто обнаружить ошибку (или, в случае флэш-памяти, применить выравнивание износа даже без ошибки) и переназначить логический блок на другой физический блок, так что оригинал помечен как неисправный (или неиспользованный), но никогда не перезаписывается.
Сжатые файловые системы могут не перезаписывать исходные блоки, потому что данные, которые перезаписывают уничтоженные фрагменты, являются либо случайными, либо чрезвычайно сжимаемыми на каждом проходе, и любая из них может привести к радикальному изменению размера сжатого файла и, следовательно, его перемещению. NTFS хранит небольшие файлы в MFT, и когда крошка округляет размер файла до кратного одного блока, его первое «перезапись» обычно приводит к перемещению файла в новое место, которое затем бессмысленно уничтожается, оставляя небольшое количество файлов. Слот MFT нетронут.
Шред не может обнаружить ни одно из этих условий (если у вас нет специальной реализации, которая напрямую обращается к вашему fs и блочному драйверу - я не знаю, существуют ли такие вещи на самом деле). Вот почему он более надежен при использовании на целом диске, чем в файловой системе.
Шред никогда не уничтожает "другие вещи" в смысле других файлов. В некоторых случаях выше он уничтожает ранее нераспределенные блоки вместо блоков, которые содержат ваши данные. Он также не уничтожает метаданные в файловой системе (что, я думаю, вы подразумеваете под «заголовком файла»). Опция -u пытается перезаписать имя файла, переименовывая в новое имя такой же длины, а затем сокращая этот символ за раз до 1 символа, перед удалением файла. Вы можете увидеть это в действии, если вы укажете и -v.