NTFS перезаписывает файл в том же физическом месте (секторе)?

2988
Randy Sugianto

Я хочу восстановить перезаписанный файл в разделе NTFS.

Допустим, у меня есть файл с именем A в каталоге.

Я сделал другой файл, но я сохранил этот новый файл с тем же именем, "A". Будет ли новый файл храниться в существующем физическом местоположении A (это означает, что исходное содержимое A никогда не сможет быть восстановлено), или новый файл, вероятно, будет занимать другое физическое расположение на диске (что означает, что исходное содержимое может, вероятно, все еще подлежит восстановлению)?

1
Даже если он не перезаписывает каждый отдельный сектор, вернуть данные будет практически невозможно. Когда вы перезаписываете его, вы разрываете «цепочку», ведущую вас через каждый сектор (т.е. первый сектор указывает на следующий, а следующий и т. Д.). Эти данные могут где-то храниться на жестком диске, но вам придется искать каждый «свободный» сектор на вашем жестком диске, чтобы попытаться восстановить его. И даже если бы вы могли найти каждый сектор, в каком порядке они идут? Я надеюсь, у вас была резервная копия. Michael Todd 14 лет назад 1

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

3
Tony Lee

Это зависит от приложения. Например, Word пишет новый файл, а затем удаляет старый, чтобы он не перезаписывал его и его можно было восстановить. Другое приложение может переписать файл на месте, а затем обрезать до нужного размера, в этом случае вы потеряете все данные.

если файл сначала усекается (задается физический размер, а не логический размер), а затем переписывается, я не уверен, что произойдет без его тестирования. Если старый файл удаляется, то создается новый с тем же именем, я думаю, что это случайность.

Если файл достаточно мал, чтобы поместиться в запись MFT для этого файла (~ 4k?, Я не помню), у вас больше шансов перезаписать данные.

2
DanO

Этот заслуживающий доверия пост группы новостей, а также ответ Тони Ли указывают, что для большинства приложений перезапись «сохранить как» - это то же самое, что и удаление, за которым следует создание нового, что касается файловой системы. Я могу поддержать это обобщение, потому что, как программист, это имеет смысл. Если бы я реализовывал функцию «Сохранить как», то нет смысла использовать открываемый файл для вызова API перезаписи, так как этот путь к коду будет использоваться только в редких случаях перезаписи. Программист гораздо чаще использует вызов файла create-new с быстрым вызовом fileDelete в тех редких случаях, когда это необходимо.

Тем не менее, нет точного способа узнать, как программатор перезаписывающего приложения решал иметь дело с существующим файлом, если только вы не можете их спросить или проследить поведение файловой системы приложения с помощью такого инструмента, как FileMon или Process Monitor .

В среднем, я предполагаю, что вероятность восстановления файла, который был «перезаписан» приложением, лишь немного ниже, чем у любого другого файла, который был удален с последующей записью на диск.

Само собой разумеется, что восстановление NTFS не очень надежная стратегия восстановления. Если это может повториться, загляните в какую-нибудь систему контроля версий, чтобы дополнить вашу ежедневную резервную стратегию. К сожалению, автоматическое управление версиями файлов, которое раньше было стандартной функцией в некоторых операционных системах, таких как VMS и Netware, больше не является распространенной функцией на массовом рынке.

0
shf301

Это может или не может быть никакого способа узнать. NTFS будет помещать файлы записи туда, где сочтет это лучшим, нет гарантии, куда они поместят файл. Если вы хотите восстановить файл, сделайте это как можно скорее, чем дольше вы ждете, тем больше вероятность того, что старый файл будет перезаписан.