不小心执行了 rm -f,先别急着跑路 (内附彩蛋)

http://www.cnblogs.com/justmine/p/10359186.html

前言

每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有bug,呵呵。

那么如果真的删除了不该删除的文件,比如数据库、日志或执行文件,咋办呢?欲知后事如何,请仔细看完本篇文章。

模拟场景

1、删除

误删除服务器目录/root/selenium/Spider下的MySql.Data.dll文件:

> rm -f /root/selenium/Spider/MySql.Data.dll> ll /root/selenium/Spider/MySql.Data.dllls: cannot access /root/selenium/Spider/MySql.Data.dll: No such file or direct

2、恢复

(1)、使用lsof命令查看当前是否有进程打开/root/selenium/Spider/MySql.Data.dll文件:

> lsof | grep /root/selenium/Spider/MySql.Data.dll

不小心执行了 rm -f,先别急着跑路 (内附彩蛋)

从上面可以看出,当前文件状态为已删除(deleted)。

(2)、查看是否存在恢复数据:

/proc/13067/fd:进程操作的文件描述符目录。86:文件描述符。
> cat /proc/13067/fd/86

不小心执行了 rm -f,先别急着跑路 (内附彩蛋)

(3)、使用I/O重定向恢复文件

> cat /proc/23778/fd/86 > /root/selenium/Spider/MySql.Data.dll> ls -l /root/selenium/Spider/MySql.Data.dll-rw-r--r-- 1 root root 702464 Feb 10 12:03 /root/selenium/Spider/MySql.Data.dll

重新运行程序:

不小心执行了 rm -f,先别急着跑路 (内附彩蛋)

说明恢复的文件没有问题。

刨根问底

前面的模拟场景演示了恢复文件的整个过程,那么原理是什么,在什么情况下,文件才是可恢复的。

在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统),比如:ls -l /proc/13067 查看进程PID为13067的进程信息。

当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。

总结

如果不小心误删了文件,不要着急,首先使用 lsof 查看打开该文件的进程,然后再使用 cat /proc/进程号/fd/文件描述符 查看恢复数据,最后使用I/O重定向的方式来恢复文件。

这里也给大家再推送一下之前与误删数据相关的经验类的文章:

慌的一批!新手妹子一个命令把公司服务器数据删没了...

顺丰被删库?半个DBA的跑路经验总结

MySQL误删数据救命指南:必收藏

学会了不小误删除文件之后的恢复方法固然重要,但日常的系统安全的防范、强化也同样非常重要,接下来为在看的读者送上福利活动。

福利时间

本次【民工哥技术之路】联合【机械工业出版社华章公司】为大家带来7本非常适合运维工程师阅读的《Linux系统安全:纵深防御、安全扫描与入侵检测》。

不小心执行了 rm -f,先别急着跑路 (内附彩蛋)

《Linux系统安全:纵深防御、安全扫描与入侵检测》

这是一部从技术原理、工程实践两个方面系统、深入讲解Linux系统安全的著作,从纵深防御、安全扫描、入侵检测3个维度细致讲解了如何构建一个铜墙铁壁的Linux防护体系。作者是资深的Linux系统安全专家、运维技术专家,在该领域有13年的从业经验,厚积薄发。本书得到了来自腾讯、阿里等知名企业的多位行业专家的高度评价。全书不仅包含大量工程实践案例,而且对各种核心知识点绘制了方便记忆的思维导图。

送书规则:

1、活动仅限公众号读者参加,截止时间2019年8月10日12:30。

2、留言分享你在误删文件、系统安全的强化、加固等方面的经验或独特的解决思路(字数20-100),每个人仅一次留言被精选的机会,且行且珍惜。精选留言点赞前3名的读者,各送出上述书籍一本,短时间赞数爆涨或其它刷赞行为均视为无效,将永久取消资格并进入黑名单。

3、精选留言中随机抽取2名留言最走心的读者,各送出上述书籍一本。

4、精选留言中随机抽取2名幸运留言的读者,各送出上述书籍一本。

关注民工哥技术之路微信公众号,在后台回复关键字:1024 或 2048,可以获取一份最新整理的技术干货。

相关文章