我刚刚在采访中问过,如果有人/var/log/apache/access.log
在写入apache日志文件时错误地删除了它,你能恢复它吗?
在我回答后面试官说我们可以inode
从文件系统中恢复apache进程的详细信息/proc
,然后可以恢复这些文件。我无法正确理解,因为这是通过电话进行的。
那么有人可以解释一下吗?
答案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