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

    文章

    10990

    浏览量

    206734
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87144

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    c盘怎么清理垃圾而不误删文件

    清理C盘垃圾文件是保持计算机性能良好和释放存储空间的重要操作。然而,在清理过程中,我们必须小心操作,以免意外删除重要文件。本文将详细介绍如何清理C盘垃圾
    的头像 发表于 12-08 14:51 383次阅读

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

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

    分布式数据恢复-hbase+hive分布式存储误删文件的数据恢复方案

    。 hbase+hive分布式存储故障&初检: 数据库文件误删除,数据库无法使用。 通过现场对该分布式环境的初步检测,发现虚拟机还可以正常启动,虚拟机里面的数据库块文件丢失。好在块
    的头像 发表于 11-24 15:55 200次阅读

    linux文件访问权限怎么设置

    Linux 文件访问权限是操作系统中一个非常重要的概念。正确地设置文件访问权限可以保护系统的安全性,防止未经授权的人员对文件进行修改、删除或
    的头像 发表于 11-23 10:20 716次阅读

    linux恢复远端备份文件

    Linux系统中,恢复远端备份文件是一项非常重要的工作。当我们的数据丢失或损坏时,从备份文件恢复数据可以帮助我们
    的头像 发表于 11-23 10:08 239次阅读

    linux系统备份与还原工具

    Linux系统备份与还原工具是用于备份和恢复Linux操作系统的工具。在日常使用中,备份和还原是非常重要的操作,可以帮助我们保护数据并快速
    的头像 发表于 11-23 10:04 971次阅读

    linux重装系统会删除所有文件

    Linux重装系统时,是否会删除所有文件取决于用户的操作和选择。一般来说,重装系统会格式化系统的安装目录,并重新安装操作系统,这意味着所有的系统文件
    的头像 发表于 11-17 10:59 1169次阅读

    服务器数据恢复-LINUX误删除/格式化的数据恢复方案

    服务器数据恢复环境: 基于EXT2/EXT3/EXT4/Reiserfs/Xfs文件系统的Linux操作系统。 服务器故障: LINUX
    的头像 发表于 09-15 15:29 551次阅读

    服务器数据恢复-ESXi误删虚拟机的数据恢复案例

    &分析: 管理员因误操作删除了一台虚拟机,该虚拟机上部署SQL Server数据库和存放了一些其它格式的文件。用户方要求恢复此虚拟机上所有文件,并且让该虚拟机能正常启动和工作。
    的头像 发表于 08-23 16:55 512次阅读
    服务器数据<b class='flag-5'>恢复</b>-ESXi<b class='flag-5'>误删</b>虚拟机的数据<b class='flag-5'>恢复</b>案例

    服务器数据恢复-NetApp FAS存储误删文件的数据恢复案例

    某公司一台NetApp存储,工作人员误操作删除一个重要的文件夹。 虽然被删除已经有一段时间了,但是根据NetApp文件系统WAFL的特点,数据被覆盖的可能性不大。
    的头像 发表于 06-29 16:02 220次阅读
    服务器数据<b class='flag-5'>恢复</b>-NetApp FAS存储<b class='flag-5'>误删</b><b class='flag-5'>文件</b>的数据<b class='flag-5'>恢复</b>案例

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

    Linux操作系统服务器,EXT4文件系统。服务器上部署3台KVM虚拟机。
    的头像 发表于 06-27 13:36 322次阅读
    <b class='flag-5'>Linux</b>下<b class='flag-5'>误删</b>除KVM虚拟机的数据<b class='flag-5'>恢复</b>案例

    Linux操作的良好习惯分享

    从事运维三年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题。今天简单整理一下,分享给各位小伙伴。
    的头像 发表于 05-12 10:51 252次阅读

    【存储数据恢复】NetApp存储误删数据的数据恢复案例

    存储数据恢复环境: NetApp存储设备,WAFL文件系统,底层是由多块硬盘组建的raid磁盘阵列。 存储故障: 工作人员误操作导致NetApp存储内部分重要数据被删除。
    的头像 发表于 05-08 13:58 368次阅读