Linux восстановить удаленные файлы

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

 

 

Как в Linux восстановить удаленные файлы

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

 

Файл в Linux является просто ссылкой на файловый дескриптор (inode). Одновременно файл можно открыть и работать с ним используя несколько утилит, это будут разные процессы, использующие один дескриптор. Дескриптор при этом будет сохраняться пока все процессы не завершат свою работу и не освободят его. После этого операционная система сможет использовать блоки памяти для других задач. Область диска перезапишется и восстановление, оставаясь по-прежнему возможным, будет представлять собой уже очень нетривиальную задачу.

 

echo «Test» > ~/test.txt

 

less ~/test.txt

 

Фактически это означает, что мы продолжаем использовать файл, заходим другой консолью и удаляем его

rm ~/test.txt

 

ls ~ | grep test.txt

В выводе пусто, значит файла нет

 

Найдем номер процесса и дескриптора в котором хранится информация

lsof | grep less

less 24160 admin 4r REG 8,3 5 16260117 /home/admin/test.txt

 

Ценность здесь представляют вторая и четвертая колонки, во второй PID, в четвертой — fd или файловый дескриптор

 

cat /proc/24160/fd/4 > ~/test2.txt

 

cat ~/test2.txt

Test

 

Данные были успешно восстановлены.

Стоит отметить, что если less завершить, то файловый дескриптор он отпустит и настолько просто восстановить содержимое удаленных файлов не получится.