一、被删除的文件正在被进程使用:

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

i_count计数器:该文件可能被多个进程使用,每一个进程使用该文件,i_count数值都会加1。反之,进程释放该文件的引用,则该计数器减1。

i_nlink计数器:记录该文件产生的硬链接的次数。

一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID依旧存在。这也是有些服务器删除一些文件但是磁盘不释放的原因。

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

1、实验准备:

终端1创建一个文件lyg.txt:

终端2另外一个终端一直tail -f(注意这个地方使用tailf不可行)这个文件,达到文件一直被tail进程占用的目的:

终端1上删除此lyg.txt文件:

2、恢复测试:

使用lsof命令查看已经被删除的文件:

在上面lsof返回结果中可以识别出到lyg.txt (deleted)被删除了,这时还存在一个进程tail占用它,tail进程的进程编号是4372,我们按照返回的结果拼接已删除的文件残留的路径为/proc/4372/fd下。

恢复,即使用cp命令,将我们识别到的3拷贝到原目录:

二、被删除的文件没有进程使用,使用extundelete、testdisk等三方工具恢复数据:

此时没有进程使用被删除的文件,被删除的文件的两个计数器i_count和i_link此时都为0。其实文件删除可以分为以下情况:

操作系统文件删除:操作系统层面的删除文件,只是删除文件的inode信息。删除inode信息之后,该文件对于操作系统及操作系统的用户不可见了。

磁盘文件物理删除:我们知道物理磁盘是由一个个数据块组成的,所以如果想恢复文件,我们需要找到存放文件的数据块block单元,真正在磁盘上存储文件的block暂时并未被删除(暂时并未被覆盖掉)。

1、所以当文件被误删除了,请立即采集以下基础操作:

①为了防止inode被覆盖掉,一定要停止对当前分区做任何操作,例如可以卸载分区umount /dev/sda3,卸载不掉请看这个umount报错设备繁忙(device is busy)怎么处理?_承缘丶的博客-CSDN博客_umount 设备忙。

②看情况停止所在分区的服务,甚至卸载其目录所在的运行设备等。

③看情况为了保险可以通过dd命令对其分区进行备份,防止数据丢失,再加一层保护:

dd if=/pldpath/filename of=/dev/sda4

2、三方工具推荐:

①适用于FAT16、 FAT32、 exFAT (FAT64)、 NTFS、ext2/3/4、xfs等的工具“testdisk”。

yum install testdisk

②支持ext3、ext4等的工具“extundelete”。

yum -y install epel-release

yum -y install extundelete

入门版Linux上恢复误删除的文件相关推荐

  1. 如何在Linux上恢复误删除的文件或目录

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 Linux不像windows有那么显眼的回收站,不是简单的还原就可以了.l ...

  2. 【必看】如何在 Linux 上恢复误删除的文件或目录

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了.linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原.这里分 ...

  3. linux文件回收站恢复,Linux之恢复误删的文件[针对丢弃到回收站]

    linux下恢复误删除的文件方法(ext2及ext3) linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直 ...

  4. linux oracle 删除为空的dbf,Linux上Oracle误删除一个没有用的dbf表空间文件

    在Linux下面安装好Oracle只有,Linux 下面就会有一个Oracle用户,Linux上Oracle误删除一个没有用的dbf表空间文件,导致数据库连接 在Linux下面安装好Oracle只有, ...

  5. Linux 利用 /proc 目录恢复误删除的文件

    Linux 利用 /proc 目录恢复误删除的文件 在 Linux 系统中删除文件时,无论文件是否在使用中,甚至是还在写入,都可以被 rm 删除.不过,rm 删除文件时并非是被真正地擦除,特别是当文件 ...

  6. 【学神-RHEL7】1-4-1-Linux文件管理和恢复误删除的文件

      Linux基本文件管理 本节所讲内容: Linux系统目录结构 相对/绝对路径 创建/复制/删除文件 rm -rf / 意外事故 查看文件内容 xfs文件系统的备份和恢复 extundelete恢 ...

  7. zypper 删除mysql_如何在 Linux 上安装/卸载一个文件中列出的软件包?

    原标题:如何在 Linux 上安装/卸载一个文件中列出的软件包? 我们可以手动去安装这些软件但是这将花费大量的时间.你可以手动安装一俩个服务器,但是试想如果你有大概十个服务器呢.在这种情况下你无法手动 ...

  8. 如何使用Windows File Recovery工具在 Windows 10 上恢复丢失的文件

    Windows 文件恢复方法介绍 这里以Wfr冬季 2020 版为例,内容参考了微软官网.链接地址为:在 Windows 10 上恢复丢失的文件. 基本步骤 如有必要,请从 Microsoft Sto ...

  9. 如何恢复误删除的文件

    我们在使用电脑的过程中,误删文件是很常见的事情.这时候,很多人便觉得数据已经丢失,不可挽回.但是,实际上,误删除的文件并没有真正被删除,只是被计算机系统隐藏或标记为可覆盖的空间,只有在被新的数据覆盖前 ...

  10. linux e514写入错误,Linux上使用vim编辑文件保存时报错:E514: write error (file system full?)...

    今天在Linux上使用vim编辑文件保存时报如下错误 E514: write error (file system full?) 从错误看,是磁盘满了,于是使用df -hl查看磁盘使用情况 $ sud ...

最新文章

  1. 初探莫比乌斯反演及欧拉反演
  2. 简单的函数(也叫方法)
  3. PHP为什么以及什么时候使用单例模式?
  4. 改成中文版的_lol手游怎么改成中文版?英雄联盟手游中文版更改教程
  5. Linux grep及正则表达式
  6. USER_AGENT 知识
  7. 【转载】Python tips: 什么是*args和**kwargs?
  8. Java API 中文版 谷歌翻译 拿走不谢 jdk api 1.8_google
  9. 【数据治理】数据元、元数据、主数据、参考数据概述
  10. 全体离职员工致某IT老板的一封公开信
  11. 2021华为杯数学建模B题完整思路+部分代码
  12. Yarn FairSheduler使用FairSharePolicy计算Fair Share的规则、原理和代码实现
  13. Httpclient4 简介
  14. 数值分析 解线性方程组的编程实现(Hilbert)
  15. 基于c语言编程思路的实践与探索,基于C语言编程思路的实践与探索
  16. spark-streaming 编程(一)构建开发环境
  17. H5+Vue2: input(number/tel)唤起数字键盘,踩坑日记
  18. Kafka HighLevel API与LowLevel API说明
  19. 骨传导蓝牙耳机排行榜、精选五款骨传导耳机品牌推荐
  20. 修改谷歌浏览器不安全提示

热门文章

  1. 应用之星--完全免费的在线移动开发平台
  2. 对List集合嵌套了map集合的排序
  3. Linux平台下快速搭建FTP服务器
  4. 【开源电机驱动】如何计算电机参数
  5. stm32cubemx hal学习记录:SPI W25Q64
  6. 用计算机处理表格信息,用计算机处理数据
  7. vue项目设置footer始终处于页面底部
  8. Real-Time Rendering 4th Edition 实时渲染第四版 第五章 着色基础(Shading Basics)
  9. 程序员面试指南 - 自我介绍
  10. onlyoffice mysql_Onlyoffice部署文档