Linux恢复删除的文件

Linux系统删除文件后的恢复方法 本文档详细介绍了Linux系统中文件删除后的恢复方法。主要内容包括:1) 文件系统删除原理与影响恢复的因素;2) 紧急响应措施如停止写入、创建磁盘镜像;3) 多种文件恢复工具的使用方法(TestDisk、PhotoRec、extundelete等);4) MySQL、PostgreSQL和MongoDB数据库的恢复技术;5) 高级恢复手段如RAID阵列恢复;6) 预防措施建议包括备份策略和回收站机制。文档强调恢复成功率取决于及时性、工具选择和操作正确性,并建议建立完善的备份策略作为数据保护的最佳实践。 阅读详情

linux恢复删除的文件

先介绍下一些文件的基本概念:

 

·         文件实际上是一个指向inode的链接, inode链接包含了文件的所有属性, 比如权限和所有者, 数据块地址(文件存储在磁盘的这些数据块中). 当你删除(rm)一个文件, 实际删除了指向inode的链接, 并没有删除inode的内容. 进程可能还在使用. 只有当inode的所有链接完全移去, 然后这些数据块将可以写入新的数据.

·         proc文件系统可以协助我们恢复数据. 每一个系统上的进程在/proc都有一个目录和自己的名字, 里面包含了一个fd(文件描述符)子目录(进程需要打开文件的所有链接). 如果从文件系统中删除一个文件, 此处还有一个inode的引用:

1.第一种方法 lsof

当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。

大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中,即 /proc/1234 中包含的是 PID 为 1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。

lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。

  进程在运行中,接下来我就把/var/log/messages这个文件删掉

shell> rm /var/log/messages

删掉之后,我再来看看这个进程的变化

shell> lsof |grep /var/log/messages

rsyslogd   1737      root    1w      REG                8,2   5716123     652638 /var/log/messages (deleted)

大家看到有变化了吧, 对比两个之后发现多了(deleted)。要找到这个文件在哪还要看看这个

PID:1737 FD:1 那我们有直接进入/proc/1737/FD/1用ll查看一下

shell> cd /proc/1737/fd/

shell> ll

 

total 0

lrwx------ 1 root root 64 Dec 23 13:00 0 -> socket:[11442]

l-wx------ 1 root root 64 Dec 23 13:00 1 -> /var/log/messages (deleted)

l-wx------ 1 root root 64 Dec 23 13:00 2 -> /var/log/secure

lr-x------ 1 root root 64 Dec 23 13:00 3 -> /proc/kmsg

l-wx------ 1 root root 64 Dec 23 13:00 4 -> /var/log/maillog

看到了1对应/var/log/messages (deleted),看看文件是不是我们要的文件:

shell> head -5 1

Nov 14 03:11:11 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.

Nov 14 03:11:11 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1241" x-info="http://www.rsyslog.com"] start

Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpuset

Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpu

Nov 14 03:11:11 localhost kernel: Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013

对比备份文件:

shell> head -5 /var/log/message_bac

Nov 14 03:11:11 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.

Nov 14 03:11:11 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1241" x-info="http://www.rsyslog.com"] start

Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpuset

Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpu

Nov 14 03:11:11 localhost kernel: Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013

对比发现数据是一样的,恢复

shell> cat 1 > /var/log/messages

 

对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。

 


2.第二种方法  extundelete

  1. 测试误操作删除以下文件

    /usr/local/dbdata/gperftools-2.4.tar.gz  #文件
    
    /usr/local/dbdata/pcre-8.32              #目录

    执行误操作:

    # rm -rf /usr/local/dbdata/gperftools-2.4.tar.gz /usr/local/dbdata/pcre-8.32
  2. 将误操作所在分区进行只读保护

    如果确定文件被误删,在没有备份的情况下请马上对分区实施写入保护(预防新的写入覆盖误删的块数据,因此权限给只读):

     # mount -o remount,ro /dev/sdb
     # mount -o remount,ro /usr/local/dbdata/
  3. 数据恢复工具安装

    工具安装部署

    官方网站是http://extundelete.sourceforge.net/ ,其目前的稳定版本是extundelete-0.2.4.

    工具下载

     # wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

    解压安装

    依赖包

    # yum -y install gcc-c++ e2fsprogs.x86_64 e2fsprogs-devel.x86_64
    # tar -jxvf extundelete-0.2.4.tar.bz2
    # cd extundelete-0.2.4
    # ./configure
    # make && make install

    验证安装结果

    # extundelete -v
  4. 文件恢复过程

    恢复指定文件:

    原理:从根节点(inode=2)开始找到被删除文件的i节点,然后recover i节点。

    以下是模拟删除gperftools-2.4.tar.gz(文件)和pcre-8.32 (目录)

    先检测被删除的文件有哪些:

    # extundelete /dev/sdb --inode 2

     

    可以看到,有以下两个

    gperftools-2.4.tar.gz 15 Deleted
    
    pcre-8.32 655361 Deleted

    注意:恢复过程不要在误删分区进行,谨防inode. block块相互覆盖

    先恢复文件(可根据文件名进行恢复):

    # extundelete /dev/sdb --restore-file gperftools-2.4.tar.gz

     

    恢复目录(根据目:# extundelete /dev/sdb --restore-directory pcre-8.32

     

    最后会在当前目录下看到一个名为RECOVERED_FILES的目录,在目录里就可以看到被误删除的文件以及目录:

     

    根据上面操作证明extundelete 工具可以实现对误删数据的恢复,而且操作简单。

总结:

  1. 使用rm一定要谨慎

  2. 磁盘按照功能进行分区是必要的

  3. 最少掌握一种数据恢复方式

2024年Linux最新linux文件误删除该如何恢复? 下面我们来进行文件的恢复,执行下文中的lsof命令,在其返回结果中我们可以看到test-recovery.txt (deleted)被删除了,但是其存在一个进程tail使用它,tail进程的进程编号是1535。我们看到文件名为3的文件,就是我们刚刚“误删除”的文件,所以我们使用下面的cp命令把它恢复回去。命令进入该进程的文件目录下,1535是tail进程的进程id,这个文件目录里包含了若干该进程正在打开使用的文件。2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的? 阅读详情

相关推荐

linux xfs文件误删除恢复_如何在Linux上恢复误删除的文件或目录

Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。 linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。一、误删除文件进程还在的情况。这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。比如当前举例说明:...

weixin_32201711的博客 2092

linux各种误删文件恢复方法(经典强推

inux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的。那么问题来了:对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢?答案当然是否定的,对于误删的文件,我们还是能通过软件恢复过来的。对于误删文件还原可以分为两种情况:一种是删除以后在进程存在删除信息一种是删除以后进程都找不到,只有借助于工具还原。

weixin_43513408的博客 106万+

如何在 Linux 中迅速找到已被删除的文件

在Linux中,当文件被删除时,我们仍有一些机会找回这些文件。使用数据恢复工具、extundelete工具或查找已删除的文件描述符等方法,可以帮助我们在某些情况下找回已删除的文件。然而,为了最大程度地提高成功恢复文件的可能性,我们应该尽早采取行动,并避免在删除后对磁盘进行写操作,以减少文件被覆盖的风险。成功恢复文件的可能性取决于文件被删除后所发生的情况,例如新文件的创建、磁盘使用情况等。在TestDisk的界面中,按照提示选择适当的磁盘和分区,然后使用"Undelete"选项来扫描并恢复已删除的文件。

ZjbFullstack的博客 3383

在Linux上恢复误删除的文件或目录_linux恢复删除的文件

这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这种情况一般是没有守护进程或者后台进程对其持续输入,所以删除就删除了,lsof也看不到。比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。命令查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。幸运的是这种情况进程还存在 ,那么开始进行恢复 操作。

m0_60721823的博客 1万+

FCL碰撞检测库在Windows下的编译与配置(MinGW+CMake)

本文详细介绍了在Windows系统下使用MinGW和CMake编译配置FCL碰撞检测库的完整流程。内容涵盖MinGW-w64、CMake的安装与环境配置,关键依赖库Eigen和libccd的安装,以及FCL源码的编译、安装与实战测试。重点解析了CMake配置命令中的关键参数与常见错误解决方案,旨在帮助开发者高效完成FCL在Windows平台的部署,适用于机器人、游戏物理引擎等需要精确碰撞检测的开发场景。

sunny的博客 481

【verilog语法详解:从入门到精通】

Verilog语法详解:从入门到精通 摘要:本文系统讲解Verilog硬件描述语言的核心语法与应用。Verilog作为数字电路设计标准,具有并行执行、硬件映射和层次化三大特点。文章从基础语法框架入手,详细介绍了模块定义、端口类型(input/output/inout)声明规范,以及线网型(wire)和寄存器型(reg)两种核心数据类型的区别与应用场景。重点讲解了组合逻辑(assign连续赋值)和时序逻辑(always块)的实现方式,包括阻塞赋值(=)与非阻塞赋值(<=)的关键差异。此外,还涵盖了参数(

m0_58476824的博客 4682

如何恢复 Linux 系统下被删除的文件 ?

TestDisk 是一个开源的、功能强大的数据恢复工具,除了恢复数据之外,还可以重建和恢复引导分区并修复分区表。它从 FAT、exFAT、ext3、ext4 和 NTFS 等文件系统中恢复被删除的文件,并将它们复制到另一个位置。TestDisk 是一个命令行数据恢复工具,这是它区别于其他数据恢复工具的特点之一。

xiaochong0302的博客 4967

深入掌握英飞凌TriCore中断向量表

摘要:本文探讨了英飞凌Tc277芯片中断机制的原理与实现,重点解析了中断向量表基地址的链接文件定义方式、BIV寄存器的初始化过程以及每个中断条目的32字节空间分配规则。通过分析中断向量号(1-255)的计算方法,阐明了中断条目跳转地址(如STM0中断向量号37对应0x800F04A0)的生成逻辑。文章还揭示了.map文件中14字节跳转指令的组成原理,以及最终通过a14寄存器跳转到实际中断函数(如stm0Sr0ISR)的执行流程,为嵌入式开发人员理解中断处理机制提供了清晰的技术路径。

IT技术猿猴的博客 1713

如何恢复 Linux 中使用 rm 删除的文件

在 Linux 中,rm 命令是一个非常常用的文件删除工具。当我们执行 rm hello.sh 删除一个文件时,文件会被立即从文件系统中删除,而不会经过回收站。删除的文件不会像在 Windows 或 macOS 中那样能够简单地通过回收站恢复。在 Linux 中使用 rm 删除文件后,该如何恢复呢?本篇文章将通过简单的方式介绍如何应对这种情况,帮助大家减少文件丢失的风险。1. rm 命令如何删除文...

fastboot 2851

ROS2新手必看:5分钟搞定Gazebo机器人仿真环境搭建(含避坑指南)

本文为ROS2新手提供了在Gazebo中快速搭建机器人仿真环境的详细指南。内容涵盖ROS2与Gazebo的协同架构理解、基础环境配置、机器人模型构建、传感器集成以及环境创建,并包含实用的避坑指南和调试技巧,帮助开发者高效掌握物理仿真技术。

weixin_29100927的博客 430

Python实战:用MOOTDX库轻松抓取股票分时数据并绘制专业图表(附完整代码)

本文详细介绍了如何使用Python的MOOTDX库获取股票分时数据,并通过Pandas进行数据清洗与VWAP计算,最后利用Matplotlib绘制包含价格线、均线和成交量的专业分时图。文章提供了从环境搭建、数据获取到可视化呈现的完整代码,帮助读者快速构建本地化的股票分时数据分析工具。

weixin_29041195的博客 472

【Linux】使用lsof命令恢复删除的文件

在 Linux 系统上,有时会意外删除仍在使用的文件。虽然文件被删除,但如果有进程仍然打开该文件,文件数据仍然存在于磁盘上。使用 lsof 命令,我们可以找到这些进程并恢复被删除的文件。本文将详细介绍如何使用 lsof 命令恢复文件。

科技改变人类,技术成就未来 2116

论文阅读笔记(一)细粒度图像检索

0、参考文献 [1]见微知著 http://geek.youkuaiyun.com/news/detail/191718 [2]Xiu-Shen Wei 《Selective Convolutional Descriptor Aggregation for Fine-Grained Image Retrieval》 [3]Lingxi Xie 《Fine-Grained Image Search》 1...

huang2818138的博客 1万+

linux文件误删除该如何恢复?

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

字母哥博客 1万+

将3DMax编辑的动画,导入给已经绑定蒙皮好的模型给Unity使用

现在程序猿想做独立游戏,即容易,也难。 说容易,引擎越来越傻瓜化。 说难,到哪去找靠谱的美术? 好在伟大的AssetStore(还有淘宝上)有大批不赖的资源可以用。 现成的模型,是好,但是,没有配套的动作,却是一件让人头疼的事情,即使用IK动画,也不能完美的弥补这一缺陷。 虽然Unity具备 retargeting 功能,但是,也不是万能的,很多情况下,非标准的骨骼会导致

正经的时候都在打游戏 1万+

dolphinscheduler集群服务一键安装启动实现流程剖析

通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。

最爱嫣夜来 1207

linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法

Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2008-08/14744.htmlinux_文件删除的恢复(rm -rf *) - weiguang1017的专栏 - 优快云博客https://blog.youkuaiyun.com/weiguang1017/article/details/5223...

weixin_42300167的博客 1389

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据恢复:在 Linux 上恢复删除了的文件

导读 你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 "rm"命令,错误的删除了一个不该删除的文件。 在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置。但是第二种情况又该怎么办呢?你可能知道,Linux 命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了。 在这篇文章里,将分享一个很有

Jack__CJ的博客 5144

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怎样在 Linux 系统中恢复已删除文件

点击关注公众号,Java干货及时送达当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件。不过,幸运的是文件是可以通过一些方法恢复的。当用户删除...

Java技术栈,分享最主流的Java技术 816

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux 删除文件恢复

Linux文件系统的反删除方法Ext3文件系统结构的简单介绍在Linux所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中

不用此栏 4461

linux xfs文件误删除恢复_【Linux】恢复误删除的文件或目录

原文链接:http://www.21yunwei.com/archives/6030原文作者:21运维Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别介绍如下。一、误删除文件进程还在的情况。这种一般是有活动的进程存在持续标准输入或输出,...

weixin_34832809的博客 1281

linux下如何恢复rm命令删除的文件

在linux下rm -rf 是一个很可怕的命令,因为下达这个命令意味着一旦删除的文件是无法挽回的,事实是如此吗?真的没有补救措施了吗?答案是委婉了,在一定的条件下可以补救,大家可能熟悉windows下删除的补救措施是通过相关的软件实现的,在linux下同样可以做到补救,但是有个大前提:就是不能有覆盖的动作(意思就是在尝试恢复删除的数据前,删除文件的目录内不能存放新东西),不然覆盖多少就损失多少!

andy572633的专栏 11万+

成功恢复 Linux 系统中已删除的文件

点击关注公众号,回复“1024”获取2TB学习资源!当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件。不过,幸运的是文件是可以通过一些方法恢...

民工哥的博客 1302

如何在Linux中恢复仍在活动进程中的已删除文件

使用终端恢复你 Linux 系统上仍在运行进程的已删除文件的快速指南。 许多情况下,删除的文件都可以恢复,比如在该文件有活动的进程在操作它,并且目前被单个或多个用户使用时。在 Linux 系统中,每个当前正在运行的进程都会获得 ID,其被称之为进程标识符 “PID”,并将它们存放在 /proc 目录中。这正是我们恢复仍在运行的进程中(具有PID...

weixin_34253539的博客 895
上一篇: linux 删除文件 磁盘空间未释放
下一篇: 增加 server httpd 控制脚本
centos2015
博客等级 码龄15年 169粉丝 188原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值