ITPub博客

首页 > > > 使用lsof恢复误删日志或数据库文件

使用lsof恢复误删日志或数据库文件

作者:蚂蚁课堂 时间:2019-09-10 18:34:33 0 删除 编辑


此方法只对正在运行中的进程所对应的文件被误删有效,其他的那种常规删除可能不见得很有效,重要数据还请专业人士恢复。


原理:

当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

在Linux系统的/proc 分区下保存着进程的目录和名字,包含fd(文件描述符)和其下的子目录(进程打开文件的链接),那么如果删除了一个文件,还存在一个 inode的引用:/proc/进程号/fd/文件描述符。我们只要知道当前打开文件的进程pid和文件描述符fd就能利用lsof工具列出进程打开的文件。通过lsof我们就可以进行简单的文件恢复工作,只要是存在引用的文件被删除,理论上我们都能恢复。


恢复细节:

1.首先随便一个正在运行的进程的日志文件,以tomcat为例

rm -rf catalina.out

2.找到进程相关pid和文件描述符

lsof | grep catalina.out

进程名 PID 用户名 文件描述符

java 16247 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 root 2w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 6430 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 6430 root 2w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16248 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16248 root 2w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16249 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16249 root 2w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16250 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16250 root 2w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16251 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16251 root 2w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)

java 16247 16252 root 1w REG 253,17 3677364 16384009 /data/tomcat_client/logs/catalina.out (deleted)


3.找到被删除文件的文件描述符

ls /proc/16247/fd/1

/proc/16247/fd/1


4.找回日志

cat /proc/16247/fd/1 > catalina.out

所以误删文件不要慌,如何做出决定才是最重要的,将损失降到最低,一直都是我们解决故障的标准。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31535111/viewspace-3167810/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2019-09-05

  • 博文量
    4
  • 访问量
    0