此方法适用于正在使用的文件 ,且被删除后,可以通过lsof的方式进行恢复。
演示:
代码语言:javascript代码运行次数:0运行复制[root@master ~]# less /var/log/messages
开启另一个终端进行删除操作
代码语言:javascript代码运行次数:0运行复制[root@master ~]# rm -rf /var/log/messages
[root@master ~]# cat /var/log/messages
cat: /var/log/messages: 没有那个文件或目录这个时候不要慌,第一个终端less还是可以正常浏览文件的
准备进行恢复文件
如果提示没有lsof命令就安装
代码语言:javascript代码运行次数:0运行复制yum -y install lsof代码语言:javascript代码运行次数:0运行复制[root@master ~]# lsof | grep deleted
rsyslogd 9420 root 6w REG 253,0 1655588 17390930 /var/log/messages (deleted)
in:imjour 9420 9442 root 6w REG 253,0 1655588 17390930 /var/log/messages (deleted)
rs:main 9420 9470 root 6w REG 253,0 1655588 17390930 /var/log/messages (deleted)
less 10295 root 4r REG 253,0 1655437 17121932 /var/log/messages (deleted)可以清楚的看到在最后一行代表这个less正在占用这个文件但是已经被删除了
记住这两个数字:第一个红框代表的是PID 第二个红框记住这个数字就行了 不需要字母
代码语言:javascript代码运行次数:0运行复制[root@master ~]# cat /proc/10295/fd/4
你会神奇的发现着就是你刚刚删除的文件
直接复制一份还原回去
代码语言:javascript代码运行次数:0运行复制[root@master ~]# cp /proc/10295/fd/4 /var/log/messages
[root@master ~]# ll /var/log/messages
-rw------- 1 root root 1655437 3月 31 14:58 /var/log/messages