恢复被删除文件(以/var/log/messages为例)

如果文件被删除,并且生成文件的进程还在(没有被重启),则通过本方法大概率可以恢复。这里以/var/log/messages日志文件被attackers给删了,我想知道他干了什么坏事,如果不恢复日志文件将不得而知(这里纯属演义哈,当然还有其他方式方法获知,这里不赘述)。

首先通过lsof查看被删除文件关联进程的PID

lsof |grep /var/log/messages

查找被删除的日志文件的文件句柄

ls -l /proc/75518/fd

恢复被删除文件(以/var/log/messages为例)_第1张图片

恢复文件

cp /proc/75518/fd/5 /var/log/messages

# 验证文件是否恢复(我在做本次试验前已经将messages文件备份为了messages_bak

ll /var/log/messages

-rw-r--r-- 1 root   root   2364528 12月 15 14:55 messages
-rw------- 1 root   root   4415753 12月 12 03:17 messages-20231212
-rw------- 1 root   root   2360532 12月 15 14:46 messages_bak

为了更直观对比恢复后的文件以及备份文件之间的区别,我下载并通过compare工具对比如下:

恢复被删除文件(以/var/log/messages为例)_第2张图片很显然,文件完全恢复被删除前的数据。 

再次提醒,这种方法仅在进程仍在运行的情况下有效。如果进程已经停止,你可能需要重新启动 rsyslogd 或者考虑使用其他手段来恢复日志。

你可能感兴趣的:(操作系统,linux,运维,服务器)