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
    +关注

    关注

    87

    文章

    11225

    浏览量

    208920
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88419

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

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

收藏 人收藏

    评论

    相关推荐

    使用lsof实现对linux文件误删恢复练习

    本文记录使用lsof实现对linux文件误删恢复练习。题目如下: 1.确保当前nginx进程运行 2.删除日志
    的头像 发表于 11-24 11:14 74次阅读
    使用lsof实现对<b class='flag-5'>linux</b><b class='flag-5'>文件</b>的<b class='flag-5'>误删</b>除<b class='flag-5'>恢复</b>练习

    服务器数据恢复—raid5阵列+reiserfs文件系统数据恢复案例

    服务器数据恢复环境: 一台服务器中有一组由4块SAS硬盘组建的RAID5阵列,上层安装linux操作系统统。分区结构:boot分区+LVM卷+swap分区(按照顺序),LVM卷划分
    的头像 发表于 11-07 13:15 106次阅读

    服务器数据恢复—异常断电导致linux系统无法启动的数据恢复案例

    服务器数据恢复环境: 某品牌服务器+同品牌存储,Linux centos7+EXT4文件系统。 服务器故障: 意外断电导致服务器操作系统不能正常启动。经过修复后系统可以正常启
    的头像 发表于 10-25 17:42 220次阅读

    服务器数据恢复—EXT3文件系统下误删除数据的恢复案例

    服务器数据恢复环境: 邮件服务器中有一组由8块盘组成的RAID5阵列, 上层是Linux操作系统+EXT3文件系统。 服务器故障: 由于
    的头像 发表于 10-23 15:11 129次阅读
    服务器数据<b class='flag-5'>恢复</b>—EXT3<b class='flag-5'>文件</b>系统下<b class='flag-5'>误删</b>除数据的<b class='flag-5'>恢复</b>案例

    NetApp数据恢复—NetApp存储WAFL文件系统下误删除的数据恢复案例

    NetApp某型号存储,WAFL文件系统。 工作人员误操作将该NetApp存储的重要数据删除。
    的头像 发表于 10-11 14:17 160次阅读

    ubuntu删除的文件怎么恢复

    : Ubuntu文件系统概述 Ubuntu是一个基于Linux操作系统,其文件系统与Windows系统有所不同。在Ubuntu
    的头像 发表于 08-30 15:10 1149次阅读

    NetApp数据恢复—NetApp存储误删除的数据恢复案例

    某公司一台NetApp存储,该存储中有24块磁盘。 工作人员误删除了NetApp存储中一个文件夹,文件夹中有非常重要的数据。 数据恢复工程师在现场对该存储进行了初检。虽然这个
    的头像 发表于 08-12 13:35 225次阅读
    NetApp数据<b class='flag-5'>恢复</b>—NetApp存储<b class='flag-5'>误删</b>除的数据<b class='flag-5'>恢复</b>案例

    虚拟机数据恢复—KVM虚拟机被误删除的数据恢复案例

    虚拟机数据恢复环境: Linux操作系统服务器,EXT4文件系统。服务器中有数台KVM虚拟机。 虚拟机1:主数据库服务器 虚拟磁盘:系统盘(qcow2)+数据盘(raw)
    的头像 发表于 08-07 13:33 369次阅读
    虚拟机数据<b class='flag-5'>恢复</b>—KVM虚拟机被<b class='flag-5'>误删</b>除的数据<b class='flag-5'>恢复</b>案例

    Oracle数据恢复—Oracle删除数据不用怕!这些数据恢复方法了解一下

    相信有很多oracle数据库用户都遇到过在操作Oracle数据库时误删除某些重要数据的情况,这个时候如果数据库没有备份且数据十分重要的,怎么才能恢复误删除的数据呢?北亚企安数据
    的头像 发表于 07-19 16:40 463次阅读

    服务器数据恢复误删除KVM虚拟机的数据恢复案例

    1台服务器,Linux操作系统+EXT4文件系统,部署了数台KVM虚拟机,每台虚拟机包含一个qcow2格式的磁盘文件,和一个raw格式的磁盘文件
    的头像 发表于 06-17 15:10 324次阅读
    服务器数据<b class='flag-5'>恢复</b>—<b class='flag-5'>误删</b>除KVM虚拟机的数据<b class='flag-5'>恢复</b>案例

    服务器数据恢复—KVM虚拟机raw格式磁盘文件数据恢复案例

    : 工作人员操作失误删除了服务器上的3台KVM虚拟机,虚拟机运行数据库,需恢复误删除虚拟机raw格式的磁盘
    的头像 发表于 05-17 13:33 413次阅读
    服务器数据<b class='flag-5'>恢复</b>—KVM虚拟机raw格式磁盘<b class='flag-5'>文件</b>数据<b class='flag-5'>恢复</b>案例

    NetApp数据恢复—WAFL文件系统下误删除数据的数据恢复案例

    某公司NetApp存储设备,人为误操作导致NetApp存储内部分重要数据被删除,该NetApp存储采用WAFL文件系统,底层是由多块硬盘组成的raid阵列。
    的头像 发表于 05-13 10:50 340次阅读

    虚拟机数据恢复—EXT4文件系统下KVM虚拟机数据恢复案例

    发行版本。KVM使用Linux自身的调度器进行管理。 本案例的服务器操作系统为Linux文件
    的头像 发表于 04-17 14:22 342次阅读
    虚拟机数据<b class='flag-5'>恢复</b>—EXT4<b class='flag-5'>文件</b>系统下KVM虚拟机数据<b class='flag-5'>恢复</b>案例

    小米电脑数据恢复的常用方法、工具和步骤

    在现代数字化时代,电脑已成为我们生活和工作必不可少的工具之一。然而,有时我们可能会遇到数据丢失的情况,这可能是因为误删、磁盘故障、操作系统崩溃等原因导致。本文将详细介绍小米电脑数据恢复
    的头像 发表于 01-25 11:10 2150次阅读

    服务器数据恢复Linux操作系统服务器raid5数据恢复案例

    服务器数据恢复环境: 某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器存放的数据有数据库、办公文档、代码
    的头像 发表于 11-28 15:07 498次阅读