Файловая система, особенно при доступе через высокоуровневый API, такой как в System.IO, представляет собой настолько много уровней абстракции над фактической реализацией хранилища, что этот подход не имеет большого смысла для современных дисков.
Для ясности: статья CodeProject, которая продвигает перезапись файла по имени несколько раз, является абсолютной чушью — по крайней мере, для SSD. Нет никакой гарантии, что запись в файл по какому-то пути несколько раз приведет к тому, что каждый раз запись будет выполняться в одно и то же физическое место на диске.
Конечно, открывая файл с доступом для чтения и записи и перезаписывая его с самого начала, концептуально запись выполняется в то же место. Но это место довольно абстрактно.
Посмотрите на это так: жесткие диски, но особенно твердотельные накопители, могут выполнить запись, например установить байт N кластера M в O, и фактически записать весь новый кластер в совершенно другое место на накопитель, чтобы продлить срок службы накопителя (поскольку повторная запись в одни и те же ячейки памяти может привести к повреждению накопителя).
Из Кодирование для твердотельных накопителей — часть 3: страницы, блоки и уровень преобразования флэш-памяти | Кодовая капсула:
Страницы не могут быть перезаписаны
Страница NAND-flash может быть записана только в том случае, если она находится в «свободном» состоянии. Когда данные изменяются, содержимое страницы копируется во внутренний регистр, данные обновляются, и новая версия сохраняется на «свободной» странице, операция называется «чтение-изменение-запись». Данные не обновляются на месте, так как «бесплатная» страница отличается от страницы, изначально содержащей данные. Как только данные сохраняются на диске, исходная страница помечается как «устаревшая» и остается такой до тех пор, пока не будет стерта.
Это означает, что где-то на диске исходные данные все еще доступны для чтения, а именно в кластере M, в который была запрошена запись. То есть до тех пор, пока он не будет перезаписан. Кластер теперь помечен как свободный, но вам потребуется очень низкоуровневый доступ к диску, чтобы получить доступ к этому кластеру, чтобы перезаписать его, и я не уверен, что это возможно с твердотельными накопителями.
Даже если вы перезапишете весь SSD или жесткий диск несколько раз, есть вероятность, что некоторые из ваших очень личных данных скрыты в ныне несуществующем секторе или странице на диске или SSD, потому что в момент перезаписи или очистки диск определил это место должно быть дефектным. Команда криминалистов сможет прочитать эти данные (хотя и поврежденные). Итак, если у вас есть данные на жестком диске, которые могут быть использованы против вас: бросьте диск в огонь.
См. также Получить смещение файла на диске/номере кластера, чтобы узнать больше ( ссылки на) информацию об API файловой системы более низкого уровня.
Но все это следует воспринимать с долей скептицизма, поскольку все это слухи, и у меня нет реального опыта работы с таким уровнем доступа к диску.
person
CodeCaster
schedule
13.08.2016