Я только что спросил в интервью, что если кто-то по ошибке удалит лог-файл apache из /var/log/apache/access.log
во время его записи, можете ли вы восстановить его?
После моего ответа интервьюер сказал, что мы можем восстановить детали inode
процесса apache из файловой системы /proc
, а затем восстановить эти файлы. Я не мог понять это должным образом, поскольку это было по телефону.
Кто-нибудь может объяснить как?
К сожалению, невозможно связать новое имя с инодом в файловой системе.
Но вы можете скопировать содержимое файла в новый файл:
# 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