Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux 误删文件恢复命令及方法

Linux 误删文件恢复命令及方法

作者头像
用户6543014
发布于 2020-12-18 01:37:24
发布于 2020-12-18 01:37:24
5.9K00
代码可运行
举报
文章被收录于专栏:CU技术社区CU技术社区
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
前言

无论在哪个系统中,删除文件都是必须谨慎的操作。

因为如果不小心删除了重要文件,就会导致个人或公司出现重大的损失。

类似于windows系统误删了文件,可以使用一些软件进行恢复操作。Linux也是有几款软件可以做到误删恢复的。

注意事项:虽然有软件可以对误删的数据进行恢复,但是完全恢复数据的概率并不是百分百的。

因此,使用rm命令删除文件的时候,一定要小心;重要的数据一定要有备份;并且恢复删除的数据前,删除文件的目录内不能往进存放新东西,否则覆盖掉的信息无法找回。

下面介绍的就是对Linux中误删文件的恢复操作。

1、lsof

原理: 这个命令实际上并不能直接用来恢复文件,不过它可以列出被各种进程打开的文件信息。

配合其他命令,从/proc目录下的信息中恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。

/proc目录是挂载的是在内存中所映射的一块区域,当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。

因此,当我们对文件进行读取或写入时(即有进程正使用文件时),哪怕硬盘中的该文件已删除,还可以从内存中的信息恢复文件。

注意: 必须以 root 用户的权限运行, 因为lsof 需要访问核心内存和各种文件。

只能恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。

如果误删了目录,目录中的其他文件未被进程打开,没有进行使用的文件将无法使用此方法恢复。

lsof输出信息的意义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
COMMAND       进程的PID(进程标识符)
USER          进程所有者
FD            用来识别该文件(文件描述符)
DEVICE        指定磁盘的名称
SIZE          文件的大小
NODE          索引节点(文件在磁盘上的标识)
NAME          打开文件的确切名称
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
最常用参数:



 -c       显示某进程现在打开的文件
 -p       显示哪些文件被某pid进程打开
 -g       显示归属某gid的进程情况
 -d       显示目录下被进程开启的文件
 -d       显示使用fd为4的进程
 -i:80    显示打开80端口的进程
代码语言:javascript
代码运行次数:0
运行
复制

恢复文件操作


环境: 在/mnt下有一些文件,其中一个文件train.less正在被查看,然后另一个终端将其删除

【1】lsof查看


查看正在使用删除文件的进程号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lsof /mnt

【2】恢复


切换到/proc下,删除文件对应的进程的pid下的文件描述符中的目录中;将对应的内容重定向或cp到其他文件中 重点关注:PID 与 FD

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   cd /proc/31284/fd/
   cat 4 > /mnt/ferris_train.less
代码语言:javascript
代码运行次数:0
运行
复制

2、extundelete

原理: 使用存储在分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件

优点: 相比于ext3grep只能恢复ext3文件系统的文件,其适用范围更广,恢复速度更快

extundelete官方地址(官方文档): http://extundelete.sourceforge.net

extundelete下载地址: http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 (最新版本的extundelete是0.2.4,于2013年1月发布)

注意:

  • 在数据删除之后,要卸载被删除数据所在的磁盘或是分区
  • 如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖
  • 数据被覆盖后无法找回
  • 恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm

安装


1、依赖安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
centos安装操作
yum install e2fsprogs-devel   e2fsprogs* gcc*

ubuntu安装操作
apt-get install build-essential  e2fslibs-dev  e2fslibs-dev

2、编译安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar xf  extundelete-0.2.4.tar.bz2
cd  extundelete-0.2.4
./configure
make
make install
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /root/extundelete-0.2.4/src
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extundelete -v

执行make命令会在src目录下生成extundelete可执行文件,可在此直接执行恢复命令。

执行make install会将程序安装在/usr/local/bin/下

恢复文件操作

执行extundelete命令的当前目录必须是可写的。

1、查看要恢复文件的分区的文件系统

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df  -Th

2、对要恢复文件的分区解除挂载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
umount /mnt
代码语言:javascript
代码运行次数:0
运行
复制

3、查看可以恢复的数据

指定误删文件的分区进行查找 最后一列标记为Deleted的文件,即为删除了的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extundelete /dev/vdb1 --inode 2 (根分区的inode值是2
代码语言:javascript
代码运行次数:0
运行
复制

4、恢复单个目录

指定要恢复的目录名 如果是空目录,则不会恢复

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extundelete /dev/vdb1 --restore-directory  ferris
代码语言:javascript
代码运行次数:0
运行
复制

当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。

5、恢复单个文件

指定要恢复的文件名 如果几k大小的小文件,有很大几率恢复失败

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz

6、恢复全部删除的文件

无需指定文件名或目录名,恢复全部删除的数据

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extundelete /dev/vdb1 --restore-all
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SACC开源架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux 误删文件恢复命令and方法
[quote color="primary"]注意事项:虽然有软件可以对误删的数据进行恢复,但是完全恢复数据的概率并不是百分百的。[/quote]
RJ1027
2021/08/09
1.8K0
Linux 误删文件恢复命令及方法
extundelete(下载地址 )最新版本的extundelete是0.2.4,于2013年1月发布
Yuou
2022/09/26
2.5K0
如何在 Linux 上恢复误删除的文件或目录?
Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。
杰哥的IT之旅
2020/08/24
40.5K0
如何在 Linux 上恢复误删除的文件或目录?
ECS误删文件后恢复数据
本文档主要以CentOS7操作系统为例,介绍如何使用开源工具Extundelete快速恢复被误删除掉的数据。
保持热爱奔赴山海
2020/09/17
9.6K0
ECS误删文件后恢复数据
Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
1、下载extundelete包,安装依赖 我用的是Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel。 yum
863987322
2018/01/24
5.5K0
Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
Linux文件恢复利器 ext3grep
介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助。ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效
py3study
2020/01/09
1.8K0
搞它!!!深入了解linux文件系统底层原理及日志文件介绍
entos7.0开始默认文件系统是xfs,centos6是ext4,centos5是ext3 ext4是第四代扩展文件系统(英语:Fourth EXtended filesystem,缩写为ext4)是linux系统下的日志文件系统,是ext3文件系统的后继版本 ext4的文件系统容量达到1EB,而文件容量则达到16TB,这是一个非常大的数字了。对一般的台式机和服务器而言,这可能并不重要,但对于大型磁盘阵列的用户而言,这就非常重要了。 ext3目前只支持32000个子目录,而ext4取消了这一限制,理论上支持无限数量的子目录
不吃小白菜
2020/09/03
2.5K0
搞它!!!深入了解linux文件系统底层原理及日志文件介绍
linux 数据恢复软件_常见的数据恢复软件
Linux下常见的基于开源的数据恢复工具有:debugfs/R-Linux/ext3grep/extundelete
全栈程序员站长
2022/09/20
5.9K0
【CVM】Linux 误删除文件怎么恢复
对于进程正在使用文件的场景,数据可以恢复是由于Linux系统下文件包含两个部分:inode 和 block ,其中 inode 中每个文件都有 2 个计数器:i_count 和 i_nlink 。只有当 i_count 和 i_nlink 均为 0 时,文件才算被删除,但被其他进程调用的文件,i_count 将不为 0。
Hanzo
2020/12/27
9.7K0
【CVM】Linux 误删除文件怎么恢复
删库这种骚操作,还能抢救回来吗
敲黑板:在Linux操作系统中,文件名只是inode号码便于识别的绰号,操作系统通过inode号来识别文件,而非文件名。
互联网老辛
2020/06/24
7830
删库这种骚操作,还能抢救回来吗
Linux中磁盘数据被误删,怎么恢复
如果你要是对linux分区和挂载不理解,建议看下: https://blog.csdn.net/qq_41276657/article/details/105168312
全栈程序员站长
2022/07/21
6K0
Linux中磁盘数据被误删,怎么恢复
恢复删除的数据
背景 还需要场景吗?数据被删除了。。。突发事件,应用上传的数据被程序自动删掉了,可悲的是还没有数据备份,数据是放在系统的 /data/webapps/xxxx/upload 目录下面,可把我们急坏了,之前又没有做过数据恢复的测试,然后我找到了一款数据恢复的软件,成功把删除的大部分数据找回来了,我的数据恢复过程如下。 安装恢复软件 1、epel 仓库安装 如果我们的源里面添加了 epel 仓库的话,我们可以直接使用下面的命令安装。 yum install extundelete -y 2、源码编译安装 wge
老七Linux
2018/05/31
1.8K0
Linux 文件系统与日志分析「建议收藏」
  Linux,全称 GNU/Linux,是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。伴随着互联网的发展,Linux 得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。   Linux 的基本思想有两点:一切都是文件;每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说 Linux 是基于 Unix 的,很大程度上也是因为这两者的基本思想十分相近。
全栈程序员站长
2022/08/24
2.2K0
Linux 文件系统与日志分析「建议收藏」
记一次数据恢复经历
有将近一周没有写文章了,经历了一场所有IT从业者的梦魇——数据丢失。一块1T的移动硬盘中,约500G的分区数据无故消失,想必挺多人都遇上过这种事,无奈,尽快尝试恢复,能恢复多少是多少了。
一条老狗
2019/12/26
1.6K0
Linux下误删除后的恢复操作(ext3/ext4)
Linux是作为一个多用户、多任务的操作系统,文件一旦被删除是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。在日常工程中,谁也说不准永远不犯错误,万一哪天不小心误操作删除了一些重要文件,该怎么办呢?? 莫慌!这里介绍一款神器extundelete,这是针对ext4文件格式下文件删除后的恢复工具,十分强大!! 废话不多说,下面开始介绍这款神器的使用: 1)下载并安装软件 extundelete主页:http://extundel
洗尽了浮华
2018/01/23
3.4K0
文件恢复问题:误删除文件后无法恢复
extundelete 是一个专门用于恢复 ext3 和 ext4 文件系统的工具。
是山河呀
2025/02/04
3240
如何恢复Linux中的误删文件
写在前面的话 在开始教程之前我有必要提醒大家,使用窗口管理器(GUI)删除文件和使用命令行工具(CLI)删除文件这两种方法之间是有区别的。 当我们使用窗口管理器来删除文件时,我们仅仅只是将文件从某个目录移动到了另一个目录中(回收站)。 在这种情况下,唯一得到更新的就是你文件系统索引节点(inode)的元数据信息,例如被删除文件的时间戳、文件所占存储区块和扩展属性等数据。你可以使用tune2fs(调整和查看ext2/ext3文件系统的文件系统参数)来查看文件系统的索引节点信息,在命令行工具中输入下列指令:
FB客服
2018/02/09
6.9K0
如何恢复Linux中的误删文件
Linux恢复误删文件的操作
Linux下,有时候我们可能会误删除一些文件,此时除了慌张,有什么可以补救的措施?
bisal
2021/02/02
3.5K0
ext3文件恢复
现在用ext3文件系统的很多,Debugfs不支持ext3文件系统,下面介绍一款工具可以恢复ext3文件系统数据
py3study
2020/01/03
8680
【教程】Linux使用git自动备份和使用支持文件恢复的rm命令
首先非常不幸地告诉你:Linux 系统的标准 rm 命令不支持文件恢复功能。一旦使用 rm 删除了文件或目录,它们就会从文件系统中永久删除,除非你使用专门的文件恢复工具尝试恢复这些文件。
小锋学长生活大爆炸
2024/02/23
3390
【教程】Linux使用git自动备份和使用支持文件恢复的rm命令
推荐阅读
相关推荐
Linux 误删文件恢复命令and方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验