Показать сообщение отдельно
Старый 10.08.2018, 00:42   #2
Меню пользователя 9285
Нарушил правила
  
Осталось добавить ещё то, что удалял в корзину а потом очищал её. А ещё то, что файловая система NTFS. Неясно какая винда, но наверное не ХР. Потому как эти уточнения очень важны для понимания ситуации.
Не понятно зачем восстанавливать пустой файл, поэтому обьясню на реальном примере.
1. В NTFS есть понятие резидентных и неризидентных данных.
Первыми могут быть файлы небольших размеров (для килобайтовой записи MFT максимальный размер в районе 700 байт) - и их данные записываются в самой записи.
Нерезидентные находятся в кластерах, список которых хранится в записи.
2. Ещё надо понимать что при удалении в корзину имя файла меняется. А после очистки корзины искать его надо (в программах восстановления) в корзине, а не где он лежал изначально.
3. Самый критичный момент. Запись MFT удаленного файла становится незанятой и в неё может быть записан любой вновь записываемый файл (*). Причём запись о новых файлах происходит в самую первую свободную запись. Из этого следует что если до всех манипуляций запись была ближе к началу MFT и она первая (или чуть дальше) из свободных, то именно она и будет перезаписана в первую очередь. Что в свою очередь означает:
- для резидентного файла, полную потерю всех данных и невозможность восстановления.
- для нерезидентного, потерю данных о расположении файла; даже в случае если сами секторы в которых находился файл ещё не перезаписаны.

Суммируя всё вышенаписанное, нет ничего удивительного что твой резидентный файл был просто перезаписан.
И если тебе интересно это понять, то лучше всего проследить всю цепочку этих действий.
(*) Вполне логично что созданный тобой новый файл для теста как раз записался в самую первую свободную запись, и после её освобождения именно она и перезаписалась чем то другим.

Последний раз редактировалось 9285, 10.08.2018 в 01:00.
9285 вне форума   Ответить с цитированием