Чому видалені файли можна відновити та як це зробити

Серед численних продуктів для відновлення даних, які пропонують відновити видалені файли за лічені хвилини, ви коли-небудь замислювалися, як саме це працює і чому це взагалі можливо? У цій статті ми розглянемо, що робить Windows під час видалення файлу та як спеціалізовані інструменти скасовують цю операцію.

Чому видалені файли можна відновити та як це зробити

Зміст

  1. Як Windows видаляє файли
  2. Поява інструментів для відновлення видалених файлів
  3. Відновлення з аналізом вмісту
  4. Відновлення даних — це міф: SSD-накопичувачі

Як Windows видаляє файли

Коли файл видаляється — вами через Провідник Windows, іншою програмою або самою операційною системою — Windows не заповнює його вміст нулями й не знищує його іншим способом. Адже така операція потребувала б чимало часу. Спробуйте видалити великий файл, який вам більше не потрібен, наприклад уже переглянутий фільм. Потім видаліть невеликий ярлик. Зверніть увагу: час, необхідний для видалення обох файлів, буде однаковим. Якби Windows щоразу стирала весь вміст файлу, видалення великого фільму тривало б досить довго. Іншими словами, стирання вмісту кожного видаленого файлу надзвичайно сповільнило б роботу комп’ютера. (Зверніть увагу: до SSD-накопичувачів це вже не стосується; про це йтиметься далі).

Отже, якщо Windows насправді не стирає файл, що ж вона робить під час його видалення? Фактично — лише одну просту річ: позначає запис у файловій системі, який вказує на цей файл, як… видалений. Такий, що більше не існує. Відсутній, порожній і нікуди не вказує. У результаті ВМІСТ вашого файлу все ще може залишатися десь на диску (якщо це не SSD), але ЗАПИС У ФАЙЛОВІЙ СИСТЕМІ, що вказував на цей файл, або більше не існує (FAT32), або позначений як порожній (NTFS). Звісно, це значне спрощення, але наразі додаткові технічні подробиці нам не потрібні. Перейдімо до відновлення.

Поява інструментів для відновлення видалених файлів

Отже, ми з’ясували, що файл усе ще може існувати десь на диску, але відповідний запис у файловій системі позначений як «видалений». Чи не можна просто скасувати цю позначку?

Саме на цій ідеї ґрунтувався один із перших інструментів відновлення даних для тодішньої операційної системи Microsoft DOS. Інструмент називався «undelete» і робив саме це: сканував файлову систему, знаходив файли, позначені як «видалені», і скидав відповідний прапорець. (У ті часи у видалених файлів втрачався перший символ імені, тому після відновлення замість «document.txt» ви отримували «~ocument.txt».

У чому проблема такого підходу? Проблем чимало. По-перше, файлова система сучасних багатозадачних операційних систем постійно змінюється. Нові тимчасові файли створюються, а файли журналів і реєстру безперервно оновлюються численними системними завданнями та фоновими програмами. Унаслідок цього початкові записи файлової системи, що вказували на видалений файл, швидко застарівають, а частину або всі ці записи операційна система може використати для зберігання інформації про нові файли.

Зауважте: на цьому етапі початковий видалений файл усе ще може перебувати на диску, а весь дисковий простір, який раніше належав цьому файлу, може залишатися незайнятим, навіть якщо запис файлової системи, що вказував на нього, більше не існує.

Бачите проблему? Саме тому ми перейшли до другого покоління інструментів відновлення даних.

Відновлення з аналізом вмісту

Інструменти відновлення даних нового покоління більше не покладаються лише на інформацію, отриману з файлової системи. Хоча сучасні програми й надалі сканують файлову систему та без проблем відновлюють видалені файли, якщо відомості про них усе ще доступні, вони також використовують інші джерела для пошуку видалених даних. Зустрічайте відновлення з аналізом вмісту!

Content-Aware Recovery

Сучасні продукти для відновлення даних, такі як RS File Recovery або RS Partition Recovery, докладають надзвичайних зусиль, щоб відновити ваші дані. Вони сканують усю поверхню диска в пошуках слідів видаленої інформації. Що саме вони шукають? Нижче пояснюється, як це працює.

Спочатку інструмент з аналізом вмісту сканує файлову систему. Навіть якщо жодної інформації про видалений файл не збереглося, сканування файлової системи дає змогу створити карту блоків диска, які належать іншим, наявним файлам, і виключити їх із подальшого сканування. Це розумний підхід: типовий жорсткий диск користувача заповнений більш ніж наполовину, тому кілька секунд, витрачені на сканування файлової системи, можуть заощадити годину або й більше під час безпосереднього сканування диска.

Далі інструмент починає читати диск, послідовно скануючи сектори, які не позначені як зайняті іншими файлами. Кожен зчитаний із диска блок перевіряється за базою даних, що містить численні характерні сигнатури. Вони дають змогу визначити, чи є блок початком файлу певного типу. Наприклад, зображення JPEG завжди починаються з «JFIF», а PDF-файли мають «%PDF%» на самому початку. (Звісно, це знову спрощення, адже насправді використовуються двійкові сигнатури).

Якщо виявлено відповідний збіг сигнатури, інструмент виконує додаткову перевірку, щоб визначити, чи є це випадковим збігом, чи сигнатура справді позначає початок файлу. По суті, ця перевірка полягає у верифікації заголовка файлу у відповідному форматі. Якщо перевірку пройдено успішно, інструмент відновлення даних аналізує заголовок, щоб визначити довжину файлу. Після обчислення довжини він зчитує з диска необхідну кількість блоків і зберігає їх у новому файлі на іншому диску.

Звучить чудово, але… чи бачите ви проблему? Цей метод чудово працює, якщо всі файли на диску зберігаються суцільними, неперервними блоками. Але що робити, якщо вони розкидані по диску безліччю дрібних частин — інакше кажучи, фрагментовані? У такому разі відновлення з аналізом вмісту може завершитися невдачею. Докладніше про відновлення фрагментованих файлів читайте в іншій нашій статті: Відновлення фрагментованих файлів.

Відновлення даних — це міф: SSD-накопичувачі

Пам’ятаєте, я казав, що Windows видаляє файли, не обнуляючи їхній вміст? Це була неправда. Вміст видалених файлів справді залишається незмінним, але лише на традиційних магнітних жорстких дисках і деяких типах твердотільних носіїв, наприклад картах пам’яті та USB-флеш-накопичувачах. А що ж із надшвидкими SSD-накопичувачами? Тут усе інакше.

Під час видалення файлу з SSD-накопичувача Windows так само не стирає його вміст, незважаючи на те, що SSD у багато разів швидші за магнітні жорсткі диски. Принцип залишається тим самим, але з одним доповненням: Windows надсилає накопичувачу команду «TRIM», повідомляючи його контролеру, що ці блоки даних більше не використовуються. Відтепер SSD може робити з цими блоками все, що вважатиме за потрібне. Він може повністю їх очистити, щоб прискорити подальший запис, обміняти їх з іншими логічними блоками даних для рівномірного розподілу зношування («вирівнювання зношування») або навіть перемістити їх у спеціальну недоступну для адресації область зарезервованих блоків даних — знову ж таки для вирівнювання зношування.

У результаті весь вміст файлу, видаленого з SSD-накопичувача, можна вважати втраченим одразу після його видалення. Так, певний час його вміст може фізично залишатися десь на SSD. Однак контролер SSD завжди повертатиме нульові значення, якщо спробувати прочитати цей блок. Обійти це неможливо, хоч би на якому низькому рівні ви працювали. Навіть спеціалізоване обладнання для створення образів, яке використовують у багатьох криміналістичних лабораторіях, не здатне відновити дані, оброблені командою TRIM.

Усе втрачено? Не зовсім. Деякі SSD-накопичувачі не підтримують TRIM, а іноді навіть за наявності такої підтримки накопичувач може бути неправильно налаштований для приймання цієї команди. Якщо SSD відформатовано у FAT32 (або exFAT), а не в NTFS, Windows не надсилатиме команду TRIM. Крім того, якщо файлова система пошкоджена, втрачені дані не оброблятимуться командою TRIM. Тож спробувати запустити якісний інструмент для відновлення даних на SSD, наприклад Partition Recovery, усе ж варто — можливо, частину інформації ще можна відновити.

Залишити коментар