linux下恢复误删除的文件或者目录

1.问题来源

现场反馈一个修改密码出错的问题,需查看一个服务名为baseserver的日志信息,之前日志存放在/data/baseserver*路径下,现登陆服务器后,发现该路径下没有任何baseserver相关的日志文件
[root@ecs-1343-0001 data]# vim /data/ba
tab健按不出来啦!!!
怎么办?客户现场急!!!为什么修改不了???
怎么办?大佬一直在催!!!怎么还没定位出来???
怎么办?我该怎么办???!!!无数个草泥马从前面奔腾而来。。。

2.过程

网上搜罗了一番关于日志恢复的方法,总算找到此神篇,此巨作。在此也感谢该作者,出处:https://www.jianshu.com/p/662293f12a47,谢谢!

3.操作

接下来 看我如何操作

3.1.ps faux查看服务的进程号

[root@ecs-1343-0001 ideal]# ps faux |grep baseserver
root     111214  0.0  0.0 112708   984 pts/1    S+   08:20   0:00                      \_ grep --color=auto baseserver
root       7649  0.0  0.0 115304   712 ?        S    00:46   0:00 /bin/bash ./start_baseserver.sh
root       7664  0.0  0.1 808080 25192 ?        Sl   00:46   0:02  \_ ./baseserver config

3.2.通过lsof带日志文件名可以查看具体是那个进程,进程号,节点等信息,如下图:

[root@ecs-1343-0001 ideal]# lsof |grep baseserver*
baseserve   7664   8360           root    3w      REG              202,2     172818  168742652 /data/log/baseserver-7664-20200120004646.log (deleted)
baseserve   7664   8360           root    4u  a_inode               0,10          0       8510 [eventpoll]
baseserve   7664   8360           root    5w      REG              202,2     172818  168742652 /data/log/baseserver-7664-20200120004646.log (deleted)
baseserve   7664   8360           root    3w      REG              202,2     172818  168742652 /data/log/baseserver-7664-20200120004646.log (deleted)
baseserve   7664   8360           root    4u  a_inode               0,10          0       8510 [eventpoll]
baseserve   7664   8360           root    3w      REG              202,2     172818  168742652 /data/log/baseserver-7664-20200120004646.log (deleted)

注释:
7664:为进程号(和ps faux输出的进程号一致)
3w 、5w:为节点信息

3.3.进入到cd /proc/7664/fd,查看所有的信息,如下图:

[root@ecs-1343-0001 ~]# cd /proc/7664/fd
[root@ecs-1343-0001 fd]# ll
total 0
lr-x------ 1 root root 64 Jan 20 00:46 0 -> /dev/null
lrwx------ 1 root root 64 Jan 20 00:46 1 -> socket:[33912]
lrwx------ 1 root root 64 Jan 20 00:46 10 -> socket:[44780]
lrwx------ 1 root root 64 Jan 20 00:46 11 -> socket:[43683]
lrwx------ 1 root root 64 Jan 20 00:46 12 -> socket:[43684]
lrwx------ 1 root root 64 Jan 20 00:46 13 -> socket:[44781]
lrwx------ 1 root root 64 Jan 20 00:46 14 -> socket:[44782]
lrwx------ 1 root root 64 Jan 20 00:46 15 -> socket:[44783]
lrwx------ 1 root root 64 Jan 20 00:46 16 -> socket:[38808]
lrwx------ 1 root root 64 Jan 20 00:46 17 -> socket:[44784]
lrwx------ 1 root root 64 Jan 20 00:46 18 -> socket:[38809]
lrwx------ 1 root root 64 Jan 20 00:46 19 -> socket:[38810]
lrwx------ 1 root root 64 Jan 20 00:46 2 -> socket:[43680]
lrwx------ 1 root root 64 Jan 20 00:46 20 -> socket:[38811]
lrwx------ 1 root root 64 Jan 20 00:46 21 -> socket:[44785]
lrwx------ 1 root root 64 Jan 20 00:46 22 -> socket:[41965]
lrwx------ 1 root root 64 Jan 20 00:46 23 -> socket:[44786]
lrwx------ 1 root root 64 Jan 20 00:46 24 -> socket:[44787]
lrwx------ 1 root root 64 Jan 20 00:46 25 -> socket:[39876]
lrwx------ 1 root root 64 Jan 20 00:46 26 -> socket:[43685]
lrwx------ 1 root root 64 Jan 20 00:46 27 -> socket:[41967]
lrwx------ 1 root root 64 Jan 20 00:46 28 -> socket:[38812]
lrwx------ 1 root root 64 Jan 20 00:46 29 -> socket:[42824]
l-wx------ 1 root root 64 Jan 20 00:46 3 -> /data/log/baseserver-7664-20200120004646.log (deleted)
lrwx------ 1 root root 64 Jan 20 00:46 30 -> socket:[42825]
lrwx------ 1 root root 64 Jan 20 00:46 31 -> socket:[41969]
lrwx------ 1 root root 64 Jan 20 00:46 32 -> socket:[45756]
lrwx------ 1 root root 64 Jan 20 01:29 33 -> socket:[439701]
lrwx------ 1 root root 64 Jan 20 00:46 4 -> anon_inode:[eventpoll]
l-wx------ 1 root root 64 Jan 20 00:46 5 -> /data/log/baseserver-7664-20200120004646.log (deleted)
lrwx------ 1 root root 64 Jan 20 00:46 6 -> socket:[43681]
lrwx------ 1 root root 64 Jan 20 00:46 7 -> socket:[44778]
lrwx------ 1 root root 64 Jan 20 00:46 8 -> socket:[43682]
lrwx------ 1 root root 64 Jan 20 00:46 9 -> socket:[44779]

看到没?对应的3 节点和5节点 不正是我们要的日志文件吗,,哈哈哈

l-wx------ 1 root root 64 Jan 20 00:46 3 -> /data/log/baseserver-7664-20200120004646.log (deleted)
l-wx------ 1 root root 64 Jan 20 00:46 5 -> /data/log/baseserver-7664-20200120004646.log (deleted)

拷贝3,5节点,即可get到我们要的日志文件,如下:

[root@ecs-1343-0001 fd]# cp 3 ~/baseserver_zsy.log.bak1
[root@ecs-1343-0001 fd]# cp 5 ~/baseserver_zsy.log.bak2
[root@ecs-1343-0001 fd]# 

以上,便完美的解决日志被误删除的问题。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值