【linux】--- 恢复删除的文件

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

 版权声明:本文为博主原创文章,未经博主允许不得转载。    https://blog.youkuaiyun.com/zonghua521/article/details/78200239
 

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

 

·         文件实际上是一个指向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

测试误操作删除以下文件

/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
将误操作所在分区进行只读保护

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

 #  # 
数据恢复工具安装

工具安装部署

官方网站是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
文件恢复过程

恢复指定文件:

原理:从根节点(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 工具可以实现对误删数据的恢复,而且操作简单。

总结:
使用rm一定要谨慎

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

最少掌握一种数据恢复方式
--------------------- 
作者:centos2015 
来源:优快云 
原文:https://blog.youkuaiyun.com/zonghua521/article/details/78200239/ 
版权声明:本文为博主原创文章,转载请附上博文链接!

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

相关推荐

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

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

weixin_32201711的博客 2092

Linux恢复删除的文件

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

xyz的博客 4345

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

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

ZjbFullstack的博客 3383

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

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

weixin_43513408的博客 106万+

数仓 - 促销敏感度、评论敏感度

1. 促销敏感度 步骤1. 首先按照最后一次下单时间及有无复购情况将用户分为四大群体: 近一年有购物行为且复购的用户 -- L1 (今年复购用户) 近一年有购物行为但无复购的用户 --L2 (今年一单购用户) 最后一次下单时间在1年之前且有复购的用户 --L3 (今年无购且只有一单用户) 最后一次下单时间在1年之前但无复购的用户 -- L4 (今年无购多单用户) 步骤2. 每一类用户群再根据优惠订单占比、每单优惠金额占比的平均值、优惠金额这三个指标进行k-means聚类,分为: 非常敏感 -

weixin_41332009的博客 1898

代号OneNET02 STM32+ESP8266 WIFI系列-第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级

第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级,这一节主要是实现通过OneNET OTA服务器将需要更新的程序远程下载到STM32单片机,这一节主要是引导程序和应用程序的讲解。

weixin_44862509的博客 1904

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

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

m0_60721823的博客 1万+

别再瞎选了!手把手教你根据车型等级,在CarSim里快速匹配最合适的动力学模型

本文详细介绍了如何在CarSim中根据车型等级快速匹配最合适的动力学模型,提升仿真效率。通过分析CarSim模型库与A/B/C/D级车标准的对应关系,提供四步精准定位方法和不同车型的特殊处理技巧,帮助工程师避免常见错误,显著缩短模型准备时间。

weixin_27015733的博客 262

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

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

xiaochong0302的博客 4967

银河飞腾FT6678实战指南:OpenMP多核并行编程优化技巧

本文详细介绍了在银河飞腾FT6678多核处理器上使用OpenMP进行并行编程的实战技巧与优化方法。从基础语法到环境配置,再到性能优化的五大核心技巧,包括循环并行化、并行粒度控制、reduction子句使用等,帮助开发者充分发挥FT6678的8核计算能力。通过实际案例展示如何将图像处理算法从200ms优化到28ms,并深入探讨了任务调度、内存访问优化等进阶主题。

weixin_29234423的博客 285

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

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

fastboot 2851

wsl2 配置ubuntu 固定ip

wsls ubuntu 设置固定ip

musk1212的博客 2616

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

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

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

烧录代码显示:no st-link 和Targrt DLL has been cancelled,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1577

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程

TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。

机器人控制与仿真应用 1万+

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

误删除Linux系统文件了?不用急,本文将给你一个恢复Linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~ 说在前面的话 针对日常维护操作,难免会出现文件误删除的操作。大家熟知Linux文件系统不同win有回收站,删除后的文件可以到垃圾箱寻回,要知道Linux文件修复比较费劲,网络上面的文档也是五花八门。所以本次研究一种比较靠谱的文件和目录恢复方法,也给维护人员留一条后路。 分析对比debugfs. testdisk 6.14. extundelete,对比各自官网介绍和操作说明本次决定研

qq_40907977的博客 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

字母哥博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

QIWEIscrm的博客 2万+

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

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

Jack__CJ的博客 5144

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

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

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

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
上一篇: 【spring】 --- spring配置文件详解
下一篇: Nginx 安装部署
Beat_Boxer
博客等级 码龄9年 18粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值