不小心执行了 rm -f,先别急着跑路 (内附彩蛋)!
点击上方“民工哥技术之路”选择“置顶或星标”
每天10点为你分享不一样的干货
作者:justmine
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.dll
ls: 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
从上面可以看出,当前文件状态为已删除(deleted)。
(2)、查看是否存在恢复数据:
/proc/13067/fd:进程操作的文件描述符目录。
86:文件描述符。
> cat /proc/13067/fd/86
(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
重新运行程序:
说明恢复的文件没有问题。
刨根问底
前面的模拟场景演示了恢复文件的整个过程,那么原理是什么,在什么情况下,文件才是可恢复的。
在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统),比如:ls -l /proc/13067 查看进程PID为13067的进程信息。
当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。
总结
如果不小心误删了文件,不要着急,首先使用 lsof 查看打开该文件的进程,然后再使用 cat /proc/进程号/fd/文件描述符 查看恢复数据,最后使用I/O重定向的方式来恢复文件。
这里也给大家再推送一下之前与误删数据相关的经验类的文章:
学会了不小误删除文件之后的恢复方法固然重要,但日常的系统安全的防范、强化也同样非常重要,接下来为在看的读者送上福利活动。
福利时间
本次【民工哥技术之路】联合【机械工业出版社华章公司】为大家带来7本非常适合运维工程师阅读的《Linux系统安全:纵深防御、安全扫描与入侵检测》。
《Linux系统安全:纵深防御、安全扫描与入侵检测》
作者:胥峰
这是一部从技术原理、工程实践两个方面系统、深入讲解Linux系统安全的著作,从纵深防御、安全扫描、入侵检测3个维度细致讲解了如何构建一个铜墙铁壁的Linux防护体系。作者是资深的Linux系统安全专家、运维技术专家,在该领域有13年的从业经验,厚积薄发。本书得到了来自腾讯、阿里等知名企业的多位行业专家的高度评价。全书不仅包含大量工程实践案例,而且对各种核心知识点绘制了方便记忆的思维导图。
送书规则:
1、活动仅限公众号读者参加,截止时间2019年8月10日12:30。
2、留言分享你在误删文件、系统安全的强化、加固等方面的经验或独特的解决思路(字数20-100),每个人仅一次留言被精选的机会,且行且珍惜。精选留言点赞前3名的读者,各送出上述书籍一本,短时间赞数爆涨或其它刷赞行为均视为无效,将永久取消资格并进入黑名单。
3、精选留言中随机抽取2名留言最走心的读者,各送出上述书籍一本。
4、精选留言中随机抽取2名幸运留言的读者,各送出上述书籍一本。
5、没有被选中的读者朋友也可以通过下面的链接购买此书:
▲
END
关注民工哥技术之路微信公众号,在后台回复关键字:1024 或 2048,可以获取一份最新整理的技术干货。
- 大家都在看 -
长按二维码关注民工哥技术之路
公众号后台回复「目录」可以查看公众号文章目录大全,回复「加群」可以加入读者技术交流群,与大家一起交流。
点击【阅读原文】和民工哥一起学技术、搞事情~~
你点一个在看 👍
就是最大的支持