0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中误删文件的恢复操作

Linux爱好者 来源:Linux爱好者 作者:Linux爱好者 2020-12-11 16:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

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

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

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

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

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

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

1、lsof

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

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

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

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

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


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

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

lsof输出信息的意义:

102f6556-2eb2-11eb-a64d-12bb97331649.png

COMMAND 进程的PID(进程标识符)USER 进程所有者FD 用来识别该文件(文件描述符)DEVICE 指定磁盘的名称SIZE 文件的大小NODE 索引节点(文件在磁盘上的标识)NAME 打开文件的确切名称

最常用参数:

-c 显示某进程现在打开的文件 -p 显示哪些文件被某pid进程打开 -g 显示归属某gid的进程情况 -d 显示目录下被进程开启的文件 -d 显示使用fd为4的进程 -i:80 显示打开80端口的进程

恢复文件操作

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

【1】lsof查看

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

lsof /mnt

1056ab16-2eb2-11eb-a64d-12bb97331649.png

107cffaa-2eb2-11eb-a64d-12bb97331649.png

【2】恢复

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

cd /proc/31284/fd/ cat 4 > /mnt/ferris_train.less

10996c6c-2eb2-11eb-a64d-12bb97331649.png

10bb38d8-2eb2-11eb-a64d-12bb97331649.png

10d54dd6-2eb2-11eb-a64d-12bb97331649.png

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、依赖安装

centos安装操作yum install e2fsprogs-devel e2fsprogs* gcc* ubuntu安装操作apt-get install build-essential e2fslibs-dev e2fslibs-dev

2、编译安装

wget http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tar xf extundelete-0.2.4.tar.bz2cd extundelete-0.2.4configuremakemake install

11075d12-2eb2-11eb-a64d-12bb97331649.png

cd /root/extundelete-0.2.4/src

112b4a9c-2eb2-11eb-a64d-12bb97331649.png

extundelete-v

1154b620-2eb2-11eb-a64d-12bb97331649.png

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


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

恢复文件操作

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

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

df-Th

1173c830-2eb2-11eb-a64d-12bb97331649.png

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

umount /mnt

11860be4-2eb2-11eb-a64d-12bb97331649.png

3、查看可以恢复的数据

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

extundelete /dev/vdb1 --inode 2 (根分区的inode值是2)

11bc97cc-2eb2-11eb-a64d-12bb97331649.png

4、恢复单个目录

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

extundelete /dev/vdb1 --restore-directory ferris

11e3515a-2eb2-11eb-a64d-12bb97331649.png

12089fbe-2eb2-11eb-a64d-12bb97331649.png

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

5、恢复单个文件

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

extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz

122d0b6a-2eb2-11eb-a64d-12bb97331649.png

6、恢复全部删除的文件

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

extundelete /dev/vdb1 --restore-all

1276c5ac-2eb2-11eb-a64d-12bb97331649.png

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217989
  • WINDOWS
    +关注

    关注

    4

    文章

    3697

    浏览量

    93236

原文标题:Linux 误删文件恢复命令及方法

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    虚拟化数据恢复—Hyper-V服务瘫痪危机:虚拟机数据文件丢失后的数据恢复案例

    一台服务器虚拟机数据文件丢失,hyper-v服务受到影响,服务器无法正常使用。 北亚企安数据恢复中心的硬件工程师对服务器进行物理故障排查,未发现服务器存在物理故障。服务器数据恢复
    的头像 发表于 11-20 15:47 173次阅读

    服务器数据恢复—意外断电!Linux服务器数据恢复大揭秘

    某品牌服务器+存储,安装的linux操作系统。 机房意外断电导致服务器操作系统无法正常启动,服务器管理员故障服务器进行修复操作后进入系统查看数据,发现部分服务器
    的头像 发表于 11-18 11:20 118次阅读

    Linux新手通关!5分钟掌握文件/目录管理,告别“找不到北”

    新手入门:Linux 文件 / 目录管理实操指南 刚上手 Linux 的小伙伴,是不是常陷入这些 “混乱时刻”:想找的文件藏在层层目录里,翻半天找不到;
    的头像 发表于 11-17 10:42 168次阅读
    <b class='flag-5'>Linux</b>新手通关!5分钟掌握<b class='flag-5'>文件</b>/目录管理,告别“找不到北”

    Mysql数据恢复—Windows Server下MySQL(InnoDB)全表误删数据恢复案例

    本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何
    的头像 发表于 09-23 15:56 494次阅读
    Mysql数据<b class='flag-5'>恢复</b>—Windows Server下MySQL(InnoDB)全表<b class='flag-5'>误删</b>数据<b class='flag-5'>恢复</b>案例

    服务器数据恢复—服务器上的卷被误删数据如何恢复

    工作人员不慎将一台服务器上的卷误删除,服务器上有一组raid5阵列。需要恢复误删除的数据。
    的头像 发表于 08-14 11:33 741次阅读
    服务器数据<b class='flag-5'>恢复</b>—服务器上的卷被<b class='flag-5'>误删</b>数据如何<b class='flag-5'>恢复</b>?

    服务器数据恢复—重装系统导致XFS文件系统分区丢失的数据恢复案例

    服务器数据恢复环境&故障: 一台服务器上通过磁盘柜+RAID卡组建的riad5磁盘阵列,服务器上层安装Linux操作系统,搭建XFS文件系统。服务器上层分配一个LUN,并划分了两个分
    的头像 发表于 06-12 11:20 620次阅读
    服务器数据<b class='flag-5'>恢复</b>—重装系统导致XFS<b class='flag-5'>文件</b>系统分区丢失的数据<b class='flag-5'>恢复</b>案例

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入一台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被
    的头像 发表于 06-10 12:03 563次阅读
    服务器数据<b class='flag-5'>恢复</b>—ocfs2<b class='flag-5'>文件</b>系统被格式化为Ext4<b class='flag-5'>文件</b>系统的数据<b class='flag-5'>恢复</b>案例

    服务器数据恢复Linux系统服务器崩溃的数据恢复案例

    服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程突然崩溃。管理员将服务器
    的头像 发表于 05-20 15:46 550次阅读

    分布式存储数据恢复—虚拟机上hbase和hive数据库数据恢复案例

    分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件误删除,数据库不能使用。要求
    的头像 发表于 04-17 11:05 514次阅读

    服务器数据恢复—AIX小型机误删数据如何恢复

    和oradata2。 AIX小型机采用JFS2文件系统分配和管理逻辑卷。JFS2文件系统的根目录存储Oracle数据库核心文件(.dbf文件),用于支撑关键业务系统运行。 服务器
    的头像 发表于 04-16 18:12 464次阅读
    服务器数据<b class='flag-5'>恢复</b>—AIX小型机<b class='flag-5'>误删</b>数据如何<b class='flag-5'>恢复</b>!

    虚拟化数据恢复—VMware虚拟化环境下重装系统导致服务器数据丢失的数据恢复

    VMware虚拟化平台 vmfs文件系统 工作人员误操作重装操作系统,服务器崩溃。 重装系统会导致文件系统元文件被覆盖。要
    的头像 发表于 03-13 10:33 634次阅读
    虚拟化数据<b class='flag-5'>恢复</b>—VMware虚拟化环境下重装系统导致服务器数据丢失的数据<b class='flag-5'>恢复</b>

    CHK文件恢复专家辅助程序

    CHK文件恢复专家u盘文件格式的辅助程序 
    发表于 03-06 17:21 0次下载

    服务器数据恢复linux操作系统云服务器数据恢复案例

    某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被tr
    的头像 发表于 02-10 18:00 618次阅读
    服务器数据<b class='flag-5'>恢复</b>—<b class='flag-5'>linux</b><b class='flag-5'>操作</b>系统云服务器数据<b class='flag-5'>恢复</b>案例

    服务器数据恢复—Zfs文件系统服务器数据恢复案例

    服务器数据恢复环境&故障: 一台zfs文件系统的服务器,管理员误操作删除了服务器上的数据。
    的头像 发表于 01-16 17:27 633次阅读

    XSAN数据恢复-XSAN文件系统数据恢复案例

    XSAN数据恢复环境: 昆腾存储+MAC OS操作系统,存储数据主要是视频类数据如MXF、MOV等格式文件。 该昆腾存储中有9个数据卷:1个META信息卷和8个DATA信息卷。 XSAN故障情况: 将存储空间从XSA
    的头像 发表于 12-30 17:10 689次阅读
    XSAN数据<b class='flag-5'>恢复</b>-XSAN<b class='flag-5'>文件</b>系统数据<b class='flag-5'>恢复</b>案例