不小心执行 rm -f,该如何恢复?

戳蓝字“CSDN云计算”关注我们哦!640?

源 / 程序员的那些事

640?wx_fmt=gif

前言

每当我们在生产环境服务器上执行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文件:

640?wx_fmt=png

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

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

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

640?wx_fmt=gif

(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

重新运行程序:

640?wx_fmt=png

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

刨根问底

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

在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统),比如:ls -l /proc/13067 查看进程PID为13067的进程信息;当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。

总结

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

640?wx_fmt=png

福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:

  • 如何高效地准备技术面试?

  • 漫画:有趣的“帽子问题”

  • 我为什么放弃了 Chrome?

  • 5天破10亿的哪吒,为啥这么火,Python来分析

  • 通俗易懂:图解10大CNN网络架构

  • 互联网公司上演反腐风暴;GitHub CEO 对断供表示无能为力;程序员面试锦集| 开发者周刊

  • 在其他国家被揭穿骗子又盯上非洲? 这几个骗子公司可把非洲人民坑苦了……

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flowable 启动流程到完成所有任务之间的数据库变化

先给出流程图,很简单的流程,就是3个UserTask ProcessDefinition pdrepositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); ProcessInstance piruntimeService.startProcessInstanceById(pd.getId());或…

如何使用dll ip转换_如何使用多功能转换插座更安全

作为专业的转换插头厂家,在制造多功能转换插座的时候都会做好了全面的安全考虑,包括但不仅限于以下安全设计:1. 高阻燃外壳材料:万浦电器的多功能转换插座的外壳大多以进口PC材料为主,阻燃温度高达750℃。在高温中不容…

2020计算机考研难度排名,2020年考研难度排名:100所高校上榜,中国人民大学排名第7...

据数据显示,2021年全国硕士研究生报考人数为341万左右,相对于2020年的290万,人数增加了近51万左右,而相对于100万左右考研计划录取人数,这也就意味着每3.5个人只有一个人能够被录取为硕士研究生,当然就考上…

玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点...

摘要: 前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用…

美女主播变大妈:在bug翻车现场说测试策略

戳蓝字“CSDN云计算”关注我们哦!美女主播变大妈:在bug翻车现场说测试策略文 | 珍妮兔这两天直播圈发生了一起严重的翻车事故。一个一直以“颜值主播”自称的网红女主播“乔碧萝殿下”,因为平台bug,露出了自己的真容,上…

一张图看懂阿里云网络产品[十一]云托付

摘要: 云托付(Cloud Hosting)是以阿里云的标准,提供给企业优质的机房托管资源、云专线网络以及增值服务,并与阿里云公有云产品结合,为企业搭建混合云提供基础资源。 原文地址:http://click.aliy…

springboot dubbo引入包_spring boot 集成 dubbo 企业完整版

一、什么是Spring Boot ?现阶段的 Spring Boot 可谓是太火了,为什么呢?因为使用方便、配置简洁、上手快速,那么它是什么?从官网上我们可以看到,它是 Spring 开源组织下的一个子项目,主要简化了 …

MaxCompute助力ofo实现精细化运营:日订单超3200万、整体运行效率提升76%

摘要:ofo小黄车大数据BI系统负责人龙利民为大家分享了ofo的上云体验,重点分享了MaxCompute的应用实践,最后对阿里云提出了自己的建议需求。 关于ofo小黄车 共享经济不仅与技术相关,它还关乎人类共同命运,关乎可持续发展…

微服务精华问答 | 为什么需要微服务?

戳蓝字“CSDN云计算”关注我们哦!过去几年来,“微服务架构”这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署&#xff0…

3个点让你彻底明白,为什么要使用MQ消息中间件?

3个点让你彻底明白,为什么要使用MQ消息中间件? 前言 一个用消息队列的人,不知道为啥用,有点尴尬。没有复习这点,很容易被问蒙,然后就开始胡扯了。 回答:这个问题,咱只答三个最主要的应用场景,不…

五位专家跟你讲讲为啥Python更适合做AI/机器学习

摘要: 为什么Python会在这股深度学习浪潮中成为编程语言的头牌?听听大牛如何解释吧! 原文地址:http://click.aliyun.com/m/43988/1.Python网络编程框架Twisted的创始人Glyph Lefkowitz(glyph):编…

c++如何显示图片_Vue+laravel后端添加商品后图片如何显示?

知识点:利用laravel的php artisan storage:link实现软连接php artisan storage:link命令执行完毕后,就会在项目里多出一个 public/storage,这个 storage 就是一个软链接,它指向 storage/app/public 目录。这样的话我们就可以直接访…

微软发布 Azure 物联网安全中心;阿里巴巴在美申请专利,以实现跨区块链统一管理;Google利用足球训练下一代人工智能……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 合众汽车新能源哪吒N01 2020…

手把手教您解决90%的自然语言处理问题

摘要: 本文将讲解如何从零开始,有效地处理自然语言问题的指南和技巧:首先解释如何构建机器学习解决方案来解决上面提到的问题。然后转向更细致的解决方案。如何将5W和H应用于文本数据!文本数据无处不在从文本数据中提取有意义和值…

Spring Boot整合swagger2(生成有左右菜单式的api文档界面)

一、pom.xml内容&#xff1a; <!--依赖swagger2 zhongzk 2019.7.7 --> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency> <depend…

你会感觉容器使用起来很痛苦吗?

摘要&#xff1a; 容器问世4年了&#xff0c;它终于逐渐褪去神秘光环。不过&#xff0c;真正运用自如并不是件容易的事情。 在将容器用于生产环境中的过程中&#xff0c;你是否有很多痛苦&#xff0c;是否踩过很多坑&#xff0c;要吐好多苦水&#xff1f; 其实很大的一个问题在…

如何证明你不是在开发垃圾?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 珍妮兔 来源| 轻松做软件需要懂垃圾分类的不仅仅只有家庭主妇和煮夫&#xff0c;还有程序员。如果你开发的功能跑不通&#xff0c;你是在开发干垃圾&#xff1b;如果你的代码害得别人的功能跑不通&#xff0c;你是在开发湿垃…

你的专属云资源管家!阿里云正式对外发布云解析PrivateZone!

摘要&#xff1a; 近日&#xff0c;阿里云宣布云解析PrivateZone正式对外公测&#xff0c;该产品是基于阿里云专有网络VPC&#xff08;Virtual Private Cloud&#xff09;环境的私有域名解析和管理服务&#xff0c;使用户在自定义的一个或多个专有网络VPC中快速构建DNS系统&…

当你和天猫精灵对话时,它在想什么?阿里智能对话技术深度解读

摘要&#xff1a; 术语对齐 TaskBot引擎&#xff1a; 核心处理对象是“技能”&#xff0c;我们把技能定义成结构化(querycontent)、垂直场景化的任务&#xff0c;比如实时场景查询、工具类、控制类等QABot引擎&#xff1a;包括KG-QA引擎、QAPair引擎、DeepQA引擎。术语对齐Task…

训练softmax分类器实例_知识蒸馏:如何用一个神经网络训练另一个神经网络

公众号关注 “ML_NLP”设为 “星标”&#xff0c;重磅干货&#xff0c;第一时间送达&#xff01;转载自&#xff1a;AI公园作者&#xff1a;Tivadar Danka编译&#xff1a;ronghuaiyang导读知识蒸馏的简单介绍&#xff0c;让大家了解知识蒸馏背后的直觉。如果你曾经用神经网络来…