linux-rm -f如何恢复
来源:http://rrd.me/ej562
前言
模拟场景
1、删除
2、恢复
刨根问底
总结
前言
每当我们在生产环境服务器上执行 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 directory
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 重定向的方式来恢复文件。
linux-rm -f如何恢复相关推荐
- 不小心执行了rm -f 如何恢复
因为有过在公司测试环境下不小心执行了rm -rf /*命令,然后花了一整个通宵的时间来恢复数据的惨痛经历.所以看到这篇文章就转载一下,方便以后使用. 不小心执行了rm -f,除了跑路,如何恢复
- linux rm -f rm -rf 命令:删除文件和文件夹
删除文件使用实例: rm -f python.py 将会强制删除python.py这个文件 删除目录使用实例: rm -rf /home/song/wahaha 将会删除/home/song ...
- Linux rm -rf * 文件恢复记
原文地址:http://blog.csdn.net/huoyunshen88/article/details/19006419 手太快,肠子都毁清了.本来是删除一个文件 rm path/myfile. ...
- linux 查看正在执行的进程的pid编号_不小心执行 rm f,该如何恢复?
作者:justmine 链接:http://www.cnblogs.com/justmine/p/10359186.html 前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小 ...
- Linux系统中如何恢复使用rm -f 删除的文件
第一步:使用 rm -f 文件删除命令删除某一个文件,比如我删除目录/home/saas-cloud/finance/下的 cfpu-saas-finance-provider-0.0.1.jar文件 ...
- 如何查看dll被那个service占用_不小心执行 rm -f,该如何恢复?
原创:程序员的那些事 前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug,呵呵. 那么如果真的删除了不该 ...
- 干货,不小心执行了rm -f,除了跑路,如何恢复?
作者:justmine 头条号:大数据与云原生 微信公众号:大数据与云原生 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便阅读,微信公众号已按分类排版,后续的文 ...
- 不小心执行 rm -f,该如何恢复?
戳蓝字"CSDN云计算"关注我们哦! 源 / 程序员的那些事 前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是 ...
- linux rm 命令删除文件恢复_Linux之恢复误删除文件
前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug. 那么如果真的删除了不该删除的文件,比如数据库.日志 ...
- Linux下通过rm -f删除大量文件时提示-bash: /bin/rm: Argument list too long的解决方法...
Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long& ...
最新文章
- poj 2392 dp 不是很懂哎!!!Space Elevator
- powershell共享服务器写文件,Windows PowerShell:共享您的脚本 - 轻松实现
- Connections between cities
- Android虚拟机-Dalvik VM架构
- VMware NAT模式
- VC++判断是否连网
- Apache和Tomcat的区别与联系
- impala查询语句_impala 下的SQL操作
- json-smart 使用示例(推荐fastjson)
- 计算机用几个字节储存,GB2312编码的字符在计算机中存储时使用几个字节
- [转]李商隐《嫦娥》赏析
- RV1126--qt实现rtmp拉流(转换本机rtsp)
- 西安理工大学计算机考研数据结构863整理总结
- Promox VE(PVE) 连接wifi配置
- sql server数据库备份单个表的结构和数据生成脚本
- 如何评价双CPU的电脑?好用吗?
- 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息
- 苹果WWDC2017 开发者大会,机器学习已得到广泛应用
- 进销存设计与分析_成本核算(7)
- Kafka-eagle 安装教程
热门文章
- 前端移动端测试 查看控制台
- 分解质因数Java_Java 分解质因数
- Windows8内核模式下开发NDIS应用-NDIS Filter讲解
- C++ Reference: Standard C++ Library reference: C Library: cstdio: stderr
- strace praticle
- 计算机网络管理工程师含金量高吗,软考中级哪个含金量高?
- Python实现梯度下降
- 行列式的基本定义与性质(笔记)
- Fire And Motion(英文原版) [转]
- 【项目一】医疗实战-传智健康