Перезапись файлов на месте в NTFS

304
chew socks

Допустим, у меня есть программа на Python, которая открывает файл и перезаписывает его нулями, и я запускаю его на компьютере под управлением Windows 7, отформатированном в NTFS. Если это сделано на жестком диске (не на SSD), будет ли файл перезаписан на месте на диске или изменения будут записаны в новом секторе, а ссылка на файл обновлена?

2

1 ответ на вопрос

0
BeowulfNode42

Краткий ответ:
Будет ли файл перезаписан на месте на диске? Может быть.
Для безопасного удаления файлов, возможно, это не приемлемо.

Более длинный ответ:
я полагаю, что это зависит от флагов, используемых при открытии файла, и от того, сжат ли файл или зашифрован. Кажется, что многие приложения, которые выглядят так, как будто они просто перезаписывают, заканчивают тем, что записывают новый контент в другое место на диске и оставляют исходный контент также на диске.

Чтобы проверить местоположение файла до и после, вы можете использовать инструмент DiskView по адресу http://technet.microsoft.com/en-au/sysinternals/bb896650.aspx

Вы ищете инструмент, который напишет все свободное место с нулями? Для этого есть инструмент MS, но он работает так, что он создает новые файлы, заполненные тем же содержимым (по умолчанию это не нули, но в любом случае хорошо сжимает), а затем удаляет их все. См. Http://support.microsoft.com/kb/833138 для получения дополнительной информации. Он также называется «Virtual Disk Precompactor.ISO» и устанавливается в режиме Virtual PC или XP.

Однако это создает короткое время, когда диск заполнен, и если система в данный момент используется, она будет распылять новые файлы по всему диску. Я думал, что если бы вы могли использовать API-интерфейсы дефрагментации для перемещения файла с нулевым заполнением во все места на диске, это оказало бы меньшее влияние на работающую систему. Но я не видел никаких инструментов для этого.

Если вы ищете инструмент для безопасного удаления файлов, он доступен от Microsoft по адресу http://technet.microsoft.com/en-au/sysinternals/bb897443.aspx и называется sdelete, который на самом деле делает некоторые сложные вещи с API-интерфейсом дефрагментации для фактически удаляйте разреженные и сжимающие файлы, в то время как простая запись нулей в файлы такого типа не приведет к записи нулей в то же место, что и старое содержимое, из-за того, как работает ntfs. Ссылка на программу sdelete дает описание этого. Обратите внимание, что sdelete не нужно устанавливать, поскольку он самодостаточен.

Нет, это программа, которую я написал. Он открывает файл, заполняет все нулями, а затем закрывает файл. chew socks 10 лет назад 0
но почему? Вы пытаетесь обезопасить файлы? BeowulfNode42 10 лет назад 0
Да и без необходимости устанавливать программу. chew socks 10 лет назад 0
Программа уже закончена, быстрая и простая. Я просто хочу знать, работает ли это. chew socks 10 лет назад 0