Что происходит при удалении файла
При удалении файла в системе происходит множество изменений. Опишем лишь самые важные из них. Прежде всего, система определяет номер принадлежащей ему inod'ы. Затем, счетчик ссылок (i_links_count) уменьшается на единицу и если при этом он не обращается в нуль, то никакого удаления не происходит, поскольку у файла еще остались ссылки. Нас этот случай не интересует. Если же ссылок больше нет, то все блоки, ранее принадлежащие файлу, в карте свободного пространства (block bitmap) помечаются как неиспользуемые, обновляется поле времени удаления (i_dtime), а сама inod'а освобождается, что осуществляется путем модификации inode bitmap. В ext3fs в дополнении к этому обнуляются указатели на 12 блоков непосредственной адресации и 3 блока косвенной адресации, в результате чего схема размещения файла оказывается частично утраченной.
Файл директорий так же затрагивают перемены. ext2fs обнуляет поле inode и увеличивает размер предшествующей записи (поле ren_len) на величину удаляемой. Предшествующая запись как бы "поглощает" последующую, а связь между именем файла и соответствующей ему inode необратимо теряется. То есть, мы можем восстановить файл, но бессильны вернуть ему прежнее имя. Правда, можно получить список всех удаленных имен, и тем или иным способом попробовать угадать какое из них "наше". При восстановлении небольшого количества файлов это срабатывает, но если удален весь корневой каталог, то ситуация ласты. А вот ext3fs оставляет поле inode неизменным, благодаря чему задача восстановления имени становится тривиальной. Проблема в том, что на ext3fs утрачивается схема размещения файла, что чрезвычайно затрудняет восстановление его содержимого.
Короче, нет в мире совершенства!
Рисунок 5 один шаг отдаляет эти четыре файла от небытия, но они не умрут! после удаления их еще будет можно восстановить!