有没有办法从“/proc”中的信息恢复文件?

有没有办法从“/proc”中的信息恢复文件?

我刚刚在采访中问过,如果有人/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

相关内容