linux找回rm的文件夹,Linux rm 文件恢复

Linux下删除命令 rm 大家肯定是熟悉得不能再熟悉了,然后有时候却阴沟里翻船不小心删除了某些重要的文件,想死的心都有了。。。。现在我们就来看看被误删除的文件要如何恢复?

Linux文件系统

Linux的文件系统(如ext3、ext4)由三部分组成:inode,data block,super block。Super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式和相关信息;

inode:记录 文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

block:实际记录文件的内容,如果文件比较大,会占用多个block;

每个inode和block都有编号,而每个文件都占用一个inode,inode内则有文件数据对应的block号码。因此,如果找到了文件的inode,自然就可以读取到文件的数据内容了。

当我们将一个文件删除时,Linux并非真实地删除磁盘里的数据,而是将文件的inode节点对于对应的扇区指针清除,同时释放这些数据对应的block,只有但这些block被系统重新分配时,那些被删除的数据才会被覆盖,最终无法恢复。

因为当我们误删数据时,应立刻卸载所在的文件系统,然后进行恢复。

Default

$ umount /dev/partition

$ mount -o remount,ro /dev/partition

1

2$umount/dev/partition

$mount-oremount,ro/dev/partition

grep

通过grep命令我们可以简单地进行文件恢复:

Default

grep -a -B 50 -A 60 'some string in the file' /dev/sda1 > results.txt

1grep-a-B50-A60'some string in the file'/dev/sda1>results.txt

说明:

Default

-a:把二进制文件当作文本文件

-A,-B:字符串的后几行和前几行

1

2-a:把二进制文件当作文本文件

-A,-B:字符串的后几行和前几行

不过grep命令比较麻烦的是,必须记得文件中的部分内容,而且如果有相同的其它文件也会被输出到result.txt,结果比较混乱;同时,由于是整个分区扫描,时间会比较漫长。

debugfs & extundelete

首先,我们先创建一个文件,然后将其删除:

Default

$ cat /proc/cpuinfo > /tmp/testrm.txt

$ rm /tmp/testrm.txt

1

2$cat/proc/cpuinfo>/tmp/testrm.txt

$rm/tmp/testrm.txt

使用系统自带的 debugfs 命令:

Default

$ sudo debugfs

debugfs: open /dev/sda2

debugfs: ls -d /tmp

1

2

3$sudodebugfs

debugfs:open/dev/sda2

debugfs:ls-d/tmp

可以看到被删除的文件testrm.txt,其中的<657573>就是文件的inode编号:

Default

……

<657573> (92) testrm.txt

……

1

2

3……

<657573>(92)testrm.txt

……

使用extundelete进行恢复:

Default

$ extundelete /dev/sda2 --restore-inode 657573

1$extundelete/dev/sda2--restore-inode657573

然后我们就可以在当前目录下的RECOVERED_FILES 目录看到恢复的文件了

Default

$ ls -al RECOVERED_FILES

-rw-r--r-- 1 root root 4.0K 7月 3 15:01 file.657573

1

2$ls-alRECOVERED_FILES

-rw-r--r--1rootroot4.0K7月315:01file.657573

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

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

相关文章

linux xargs命令,xargs 命令教程

xargs是 Unix 系统的一个很有用的命令&#xff0c;但是常常被忽视&#xff0c;很多人不了解它的用法。本文介绍如何使用这个命令。一、标准输入与管道命令Unix 命令都带有参数&#xff0c;有些命令可以接受"标准输入"(stdin)作为参数。$ cat /etc/passwd | grep root…

java 职责链模式_Java中的责任链模式

java 职责链模式当应有几个处理器来执行某项操作并为这些处理器定义特定顺序时&#xff0c;就需要采用责任链设计模式。 在运行时处理器顺序的可变性也很重要。模式的UML表示如下&#xff1a; 处理程序定义处理器对象的一般结构。 这里的“ HandleRequest”是抽象处理器方法。 …

ArcMap 导入Excel坐标数据

1 准备Excel坐标数据集合 2 ArcMap加入Excel数据 将excel文件放入arcmap工作区的物理路径下在工作区的根图层上点键&#xff0c;选择添加数据&#xff0c;找到excel文件并选择相应的工作薄完成后&#xff0c;excel工作薄即导入工作区左边的图层下。3 ArcMap加入图层文件 在S…

linux6如何分区,CentOS6.9安装 硬盘分区方案与分区步骤

Linux默认可分为3个分区&#xff0c;分别是boot分区、swap分区和根分区&#xff1a;1、swap&#xff1a;交换分区&#xff0c;实现虚拟内存&#xff0c;建议大小是物理内存的1~2倍。2、/boot&#xff1a;用来存放与系统启动有关的程序&#xff0c;比如启动引导装载程序等&#…

实施自定义JMeter采样器

随着我们采用不同的体系结构和实现方式&#xff0c;对通用压力测试工具的需求不断增长。 Apache Jmeter是进行负载测试时最著名的工具之一。 它支持许多协议&#xff0c;例如ftp http tcp&#xff0c;并且可以轻松地用于分布式测试。 Jmeter还为您提供了一种创建自定义采样器…

hdu 6194 后缀数组

题意&#xff1a;一个字符串&#xff0c;查询恰好出现k次的子串的数目 思路&#xff1a;后缀数组在height上进行操作。我们直接枚举长度为k的区间求min值&#xff0c;但是要注意的是直接这么算是会重复的&#xff0c;同时也可能超过k次&#xff0c;这样我们就需要把枚举的前一个…

linux grep命令 例子,14个grep命令使用例子

所有的类linux系统都会提供一个名为grep(global regular expression print&#xff0c;全局正则表达式输出)的搜索工具。grep命令在对一个或多个文件的内容进行基于模式的搜索的情况下是非常有用的。模式可以是单个字符、多个字符、单个单词、或者是一个句子。当命令匹配到执行…

JSP动作元素

https://www.w3cschool.cn/jsp/jsp-actions.html JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。 动作是第三种类型的语法元素&#xff0c;它们被转换成java代码来执行操作。如访问一个java对象或调用方法 利用JSP动作可以动态地插入文件、重用JavaBean组件…

c语言中的所有代码大全,C语言库函数代码大全

O类字母函数名: open 功 能:打开一个文件用于读或写 用 法: int open(char *pathname,int access[, int permiss]); 程序例: #include#include#include#include int main(void) { inthandle; char msg[] "Helloworld";if ((handle open("TEST.$$$", O_CRE…

依赖注入通俗解释_我如何向团队解释依赖注入

依赖注入通俗解释最近&#xff0c;我们公司开始开发一个新的基于Java的Web应用程序&#xff0c;经过一些评估过程&#xff0c;我们决定使用Spring。 但是许多团队成员并不了解Spring和Dependency Injection的原理。 因此&#xff0c;我被要求给出一个速成班&#xff0c;讲解什么…

session cookie

http://www.cnblogs.com/andy-zhou/p/5360107.html&#xff08;牛逼网址&#xff09; http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html&#xff08;同款牛逼&#xff09; cookie: session: Session是另一种记录客户状态的机制&#xff0c;不同的是Cookie保存…

C语言程序设计二期末考试,9第二学期期末考试《C语言程序设计》A

期末试题 二级c语言………………………………装………………………………订…………………………………线………………………………安徽工业大学题纸(一)2009~2010学年第一学期期末考试《C程序设计(2)》试卷 A考试时间&#xff1a;120分钟满分&#xff1a;100分(作题答案一律写…

SWT ScrolledComposite解释

就像我的一个朋友曾经说过的那样&#xff0c;SWT的ScrolledComposite是令人讨厌的野兽。 在某种程度上&#xff0c;我同意。 这可能是为什么有太多关于如何使用此小部件的问题的原因。 但不仅是ScrolledComposite的作者受到了谴责。 当某个软件无法按您预期的方式工作时&#…

c语言中变量的值十进制,C语言中介绍的整型变量 即十进制 十六进制什么的是什么意思 能具体解释一下吗 还有换算什么的 谢谢...

二进制.八进制.十进制.十六进制.编程序时不需要换算。输入的时候八进制%o十六进制%x十进制%d在计算机都一样是二进制&#xff0c;不影响计算&#xff0c;不存在转换问题。输出的时候&#xff0c;同理用%o,%d,%x输出相应的进制。(0.56)85*8-16*8-2(0.71875)10(12A)161*1622*161A…

大数相加c语言思路,大数相加

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include /**** 定义双向节点* 数据区为一个整型数字***/struct Node {int number;//数据区&#xff0c;仅一个数字&#xff0c;保存一位数字struct Node * next;struct Node * prev;};typedef struct Node Node;/*** 创建…

关联关系、依赖关系总结

一、关联关系总结&#xff1a; 1.对象和对象之间的连接。在Java中&#xff0c;关联关系的代码表现形式为一个类做为另一个类的属性类型存在。即“有”的关系&#xff1a;”has-a”。 2.关联关系的方向&#xff1a;关联关系分为单向关联和双向关联 ①单向关联&#xff1a; A类…

使用cglib创建代理对象

在上一篇文章中&#xff0c;我讨论了基于标准Java的代理对象。 当您要在实现接口的对象上具有方法调用处理程序时&#xff0c;可以使用这些方法。 Java反射代理的创建要求您具有一个实现接口的对象。 我们要代理的对象已经失控&#xff0c;它没有实现我们要从处理程序调用的接口…

四阶龙格库塔c语言,四阶龙格库塔算法的C语言实现

解微分方程&#xff12;&#xff10;&#xff10;&#xff11;年&#xff13;月焦作大学学报&#xff2a;&#xff2f;&#xff35;&#xff32;&#xff2e;&#xff21;&#xff2c;&#xff2f;&#xff26;&#xff2a;&#xff29;&#xff21;&#xff2f;&#xff3a;&a…

8个超震撼的HTML5和纯CSS3动画源码

HTML5和CSS3之所以强大&#xff0c;不仅因为现在大量的浏览器的支持&#xff0c;更是因为它们已经越来越能满足现代开发的需要。Flash在几年之后肯定会消亡&#xff0c;那么HTML5和CSS3将会替代Flash。今天我们要给大家分享8个最新的HTML5和纯CSS3动画及其源码&#xff0c;这些…

c语言打砖块游戏代码,打砖块游戏的源代码(请多指教)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#includevoid draw(int x1){int m0,n0,x40,y20;int t0,i,j,k1;int a0,b127,c88;for(i0;i<8;i){ni*20;yn20;for(j0;j<16-t;j){m(ji)*40;xm40;int points[]{m,n,x,n,x,y,m,y}; setfillstyle(R…