Есть ли способ восстановить файлы из информации в `/proc`?

Я только что спросил в интервью, что если кто-то по ошибке удалит лог-файл apache из /var/log/apache/access.logво время его записи, можете ли вы восстановить его?

После моего ответа интервьюер сказал, что мы можем восстановить детали inodeпроцесса apache из файловой системы /proc, а затем восстановить эти файлы. Я не мог понять это должным образом, поскольку это было по телефону.

Кто-нибудь может объяснить как?

0
20.06.2020, 01:16
1 ответ

К сожалению, невозможно связать новое имя с инодом в файловой системе.

Но вы можете скопировать содержимое файла в новый файл:

# in shell 1
bash -c 'echo $$; exec cat >delfile'
27225

Итак, вам нужно определить PID процесса, который держит файл открытым. Затем вы определяете файловый дескриптор удаленного файла:

# in shell 2, same directory
$ rm delfile
$ ll /proc/27225/fd
insgesamt 0
lrwx------ 1 hl hauke 64 20. Jun 00:38 0 -> /dev/pts/4
l-wx------ 1 hl hauke 64 20. Jun 00:38 1 -> '/crypto/home/hl/tmp/delfile (deleted)'
lrwx------ 1 hl hauke 64 20. Jun 00:38 2 -> /dev/pts/4

Затем вы можете скопировать содержимое:

cp /proc/27225/fd/1 restored_file
1
18.03.2021, 23:26

Теги

Похожие вопросы