2

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

1 ответ1

0

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .