linux数据恢复实验_linux数据恢复命令

linux数据恢复实验_linux数据恢复命令

一、linux误删除数据的场景

在实际的工作中,朋友们可能会将linux服务器上的文件不小心误删除掉了。而且越是资历老的工程师越容易犯这样的错误,敲代码的速度也是够快,啪啪rm -rf一个回车,然后就是打脸时刻 。新人操作文件时往往战战兢兢、反复确认,反而不容易出错。如果你也是一个有多年工作经验的工程师,也给自己提个醒:淹死的都是会游泳的。我们需要区分两种场景来进行误删除文件的恢复:

  • 第一种场景:被删除的文件正在被进程使用
  • 第二种场景:文件没有被任何进程使用

第一种场景的数据恢复相对简单一些,第二种相对麻烦些。

二、场景一数据恢复实验

第一种场景:被删除的文件正在被其他进程使用。我们先创建一个独立目录testdel,用于完成我们的实验。然后使用echo命令创建一个文件test-recovery.txt,放在testdel目录下,文件内容是:"test file delete recovery"。重点来了:我们使用命令tail来一直监听这个文件,表示这个文件一直被tail进程监听占用。

$mkdir ./testdel; $ echo "test file delete recovery"  > ./testdel/test-recovery.txt; $ tail -f ./testdel/test-recovery.txt;

此时我们新打开一个linux终端,完成文件删除操作,文件删除之后使用ls命名在该目录下查看不到任何的文件。

$ rm -fr ./testdel/test-recovery.txt; $ ls -l ./testdel

下面我们来进行文件的恢复,执行下文中的lsof命令,在其返回结果中我们可以看到test-recovery.txt (deleted)被删除了,但是其存在一个进程tail使用它,tail进程的进程编号是1535。

$ lsof | grep test-recovery.txt; tail      1535        kafka    3r      REG  253,2        26  34095906 /home/kafka/testdel/test-recovery.txt (deleted)

然后我们使用cd /proc/1535/fd命令进入该进程的文件目录下,1535是tail进程的进程id,这个文件目录里包含了若干该进程正在打开使用的文件。

linux数据恢复实验_linux数据恢复命令

我们看到文件名为3的文件,就是我们刚刚“误删除”的文件,所以我们使用下面的cp命令把它恢复回去。至此,有进程引用的文件误删除恢复就完成了。

cp ./3 /home/kafka/testdel/test-recovery.txt;

三、场景二数据恢复

对于场景二,没有程序使用该文件,则该文件被删除之后进行文件恢复就稍微麻烦一些了。首先我们要区分当前操作系统挂载的磁盘目录的文件格式,比如:执行cat /etc/fstab得到如下的结果

linux数据恢复实验_linux数据恢复命令

四、深入-为什么数据可以恢复?

第一种情况:当某个文件正在被某个程序使用时,linux针对该文件有两个计数器

  • i_count计数器:该文件可能被多个进程使用,每一个进程使用该文件,i_count数值都会加1。反之,进程释放该文件的引用,则该计数器减1
  • i_nlink作用是记录该文件产生的硬链接的次数(在linux中可以使用ln命令创建文件的硬链接)。

当以上两个计数器都为0的时候,该文件实际上就是属于没有进程使用它的状态,就直接被删除掉了。如果有进程使用它,那么该文件的i_count数值不为0,就可以在/proc/<进程id>/fd目录中找回来

第二种情况:此时没有进程使用被删除的文件,被删除的文件的两个计数器i_count和i_link此时都为0。这个时候我们要理解一个概念

  • 操作系统文件删除:操作系统层面的删除文件,只是删除文件的inode信息。删除inode信息之后,该文件对于操作系统及操作系统的用户不可见了。
  • 磁盘文件物理删除:我们知道物理磁盘是由一个个数据块组成的,所以如果想恢复文件,我们需要找到存放文件的数据块block单元,真正在磁盘上存储文件的block暂时并未被删除(准确的说是暂时并未被覆盖)。

需要注意的是:存放数据块block单元的文件内容会一直存在么?答案是否定的,因为该数据块的内容被删除了,所以该数据块是可以被其他进程重新利用写入数据的。所以,当你发现你误删除了非常重要的文件时,你需要做的第一件事就是将磁盘从操作系统中unmout,或者停止所有进程向磁盘中写数据。因为写作数据操作,可能会占用覆盖你"误删除文件"所在数据块,一旦数据块被写的数据写入覆盖,你的数据文件就再也找不回来了。

本文【linux数据恢复实验_linux数据恢复命令】由作者: 主键 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4268.html

(0)
上一篇 2023-03-11 09:05:57
下一篇 2023-03-12 08:11:14

相关推荐

  • 截取字符串前几位的方法

    Excel表格截取字符串常用到的方法是函数法,常用的字符串截取函数包括left,right,mid函数等,今天小编给大家讲解一下上述三个常用函数的语法,然后以一个字符串为例分别应用以上三个函数截取。 字符串截取常用的函数有:left函数,right函数和mid函数 ; left函数语法:left(text,num_chars),从左侧开始截取部分字符串 ; …

    2023-03-09
    800
  • cad常用命令大全及使用方法,CAD基础命令

    这个练习题用CAD直线、圆、圆角、修剪等多个命令操作完成,主要是要知道多个CAD命令的结合使用过程,那么所用的操作软件为CAD梦想画图 目标图形 绘制过程: 1.使用CAD直线命令:L绘制一条水平直线与一条垂直直线,并且将线型与颜色修改为辅助线样式。 2.使用CAD偏移命令:OFFSET将垂直线段分别左右偏移30个单位与水平线段相交与A、B两点。 3.使用C…

    2023-03-15
    100
  • 菜鸟程序员入职有多累(程序员第一份工作干多久最好)

    我相信大多数程序员都和我一样,工作第1天都是开心且富有激情的,但是后来嘛,就变得死气沉沉和咸鱼没什么区别。 极度劳累在身体上的体现是很明显的。就比如说,我敲了一行代码,但是突然出现了一个错误,我要找到这个bug,我找了两三个小时,结果发现只是一个字母或者一个标点符号错误……顿时我的悲愤感就达到了顶峰。但是我这两三个小时确确实实的付出了劳动,顿时身心的疲惫感就…

    2023-03-18
    000
  • .net邮件发送

    1、安装Nuget包MailKit,引用命名空间。 using MailKit.Net.Smtp; using MimeKit;注意:引用MailKit对应最新版本 2、定义收发地址和标题 MimeMessage message = new MimeMessage(); MailboxAddress from = new MailboxAddress(&#0…

    2023-03-14
    600
  • 弗洛伊德算法是谁提出的,弗洛伊德最著名的理论

    算法对于我们的世界是多么重要。自计算机科学诞生之日起,关于算法的研究就一直是一个核心话题。 现代计算机科学中充满了各种各样的算法,许多图灵奖得主也正是因提出的各种经典算法而闻名于世。例如: 提出单源最短路径算法的迪可斯特朗(Edsger Dijkstra,1972年图灵奖得主) 提出字符串匹配算法的高德纳(Donald Knuth,1974年图灵奖得主) 提…

    2023-03-13
    600
  • 微信小应用是不是有挂_微乐游戏真的有挂吗

    受新冠肺炎疫情的影响,从2020年春节开始,很多人宅在家中,玩起了手机游戏。其中,微信小游戏用户暴增,成为了最受欢迎的小游戏。 微信小游戏迅速升温 相对于体积较大的APP游戏和网络游戏来说,小游戏一般是指体积较小、无需安装、玩法简单,通常为休闲益智类主题的游戏。近一段时间,微信小游戏的用户数据增长了50%。 2017年底,微信推出的小游戏“跳一跳”风靡一时 …

    2023-03-09
    600
  • linux 分区格式_linux系统分区

    一、前期准备 测试环境:VMware Workstation / centos8 1)增加一块磁盘 2)查看新增磁盘(lsblk),发现没找到新增的磁盘 3)解决查不到新增磁盘问题 重新扫描SCSI总线添加设备, $ echo "- – -" > /sys/class/scsi_host/host0/scan $ echo &#03…

    2023-03-16
    400
  • msdn中文版手册

    MSDN的东西很多,仅仅说下常用的系统和office这两块。 不会进入? 百度一下,谁都知道。 1 Windows7的系统示例 先放图 比较推荐专业版和旗舰版两个版本。 Windows 7可供选择的版本有:入门(初级)版(Starter)、家庭普通版(Home Basic)、家庭高级版(Home Premium)、专业版(Professional)、企业版(…

    2023-03-12
    500
  • 句柄数不断增加怎么解决(句柄数一直增加有影响吗)

    问 MySQL 使用的文件句柄数 突然增加, 我们该如何诊断 实验 我们接着宽油起一个数据库: 翻倍法造表 a : 将 a 表造的大一点: 给 a 表追加一列: 再造个表 b : 让我们来下一个 SQL : 在 SQL 执行的过程中, 观察 MySQL 的文件句柄数, 发现文件句柄在不断上升: 现在我们来诊断 为什么 MySQL 的文件句柄数会上升. 我们动…

    2023-03-16
    300
  • 3d材质库的材质怎么删除 3d如何一键去掉所有的材质

    今天来讲一下3dmax节点材质编辑器。 很多人在学习3DMAX时都是使用精简模式的材质编辑器。精简模式的材质编辑器结构简单,对于初学者来说比较容易掌握 但当我们在实际工作的时候,往往会用到比较复杂的材质制作逻辑,这时候精简模式的材质编辑器就会显得很不方便。 节点式材质编辑器的优点就在于,它能够把整个材质的编辑过程和逻辑关系以及素材的引用,清晰直观的呈现出来。…

    2023-03-20
    000

发表回复

登录后才能评论
返回顶部
错说博客上线啦!