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

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

3天内不再提示

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

Q4MP_gh_c472c21 来源:21运维 作者:21运维 2021-11-18 11:33 次阅读

Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。linux删除文件还原可以分为两种情况:一种是删除以后在进程存在删除信息,另一种是删除以后进程都找不到,只有借助于工具还原。这里分别简单介绍一下。

一、误删除文件进程还在的情况

这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。比如,当前举例说明:通过一个shell终端对一个测试文件做cat追加操作:

[root@21yunwei_backup ~]# echo  "hello  py"> testdelete.py[root@21yunwei_backup ~]# cat  >> testdelete.py hello delete

另外一个终端查看这个文件可以清楚看到内容:

[root@21yunwei_backup ~]# cat testdelete.py hello  pyhello delete

此时,在当前服务器删除文件rm -f ./testdelete.py

命令查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。

1、lsof查看删除的文件进程是否还存在

这里用到一个命令lsof,如没有安装请自行yum或者apt-get。类似这种情况,我们可以先lsof查看删除的文件是否还在:

[root@21yunwei_backup ~]# lsof | grep deletedmysqld     1512   mysql    5u      REG              252,306312397/tmp/ibzW3Lot (deleted)cat       20464    root    1w      REG              252,3231310722/root/testdelete.py (deleted)

幸运的是这种情况进程还存在 ,那么开始进行恢复 操作。

2、恢复

恢复命令:

cp /proc/pid/fd/1/指定目录/文件名

进入进程目录,一般是进入/proc/pid/fd/,针对当前情况:

[root@21yunwei_backup ~]# cd   /proc/20464/fd[root@21yunwei_backup fd]# lltotal 0lrwx------ 1 root root 64Nov1518:120> /dev/pts/1l-wx------ 1 root root 64Nov1518:121> /root/testdelete.py (deleted)lrwx------ 1 root root 64Nov1518:122> /dev/pts/1

恢复操作:

cp 1/tmp/testdelete.py

查看文件:

[root@21yunwei_backup fd]# cat  /tmp/testdelete.pyhello  pyhello delete

恢复完成。

二、误删除的文件进程已经不存在,借助于工具还原

创建准备删除的目录并echo一个 带有内容的文件:

[root@21yunwei_backup 21yunwei]# tree.├── deletetest│   └── mail│       └── test.py├── lost+found└── passwd3 directories, 2 files[root@21yunwei_backup 21yunwei]# cat /21yunwei/deletetest/mail/test.py hello Dj[root@21yunwei_backup 21yunwei]# tail  -2  passwd haproxy500:502::/home/haproxy:/bin/bashtcpdump72:72::/:/sbin/nologin

执行删除操作:

[root@21yunwei_backup 21yunwei]# rm  -rf    ./*[root@21yunwei_backup 21yunwei]# lltotal 0

现在开始进行误删除文件的恢复。这种情况一般是没有守护进程或者后台进程对其持续输入,所以删除就删除了,lsof也看不到。就要借助于工具。这里我们采用的工具是extundelete第三方工具。恢复步骤如下:

停止对当前分区做任何操作,防止inode被覆盖。inode被覆盖基本就告别恢复了。比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。2.通过dd命令对当前分区进行备份,防止第三方软件恢复失败导致数据丢失。适合数据非常重要的情况,这里测试,就没有备份,如备份可以考虑如下方式:

dd if=/path/filename of=/dev/vdc1

通过umount命令,对当前设备分区卸载。或者fuser 命令。

umount /dev/vdb1 或者 umount /21yunwei

如果提示设备busy,可以用fuser命令强制卸载:

fuser -m -v -i -k /21yunwei

下载第三方工具extundelete安装,搜索误删除的文件进行还原。

wget  http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tar jxvf extundelete-0.2.4.tar.bz2cd  extundelete-0.2.4./configure makemake  install

扫描误删除的文件:

[root@21yunwei_backup extundelete-0.2.4]# extundelete  --inode 2/dev/vdb1NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Group: 0Contents of inode 2:..省略N行File name                                       | Inode number | Deleted status.                                                 2..                                                2lost+found                                        11Deleteddeletetest                                        12Deletedpasswd                                            14Deleted

通过扫描发现了我们删除的文件夹,现在执行恢复操作。

1、恢复单一文件passwd

[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-file passwd   NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.Successfully restored file passwd

恢复文件是放到了当前目录RECOVERED_FILES。查看恢复的文件:

[root@21yunwei_backup /]# tail  -5  RECOVERED_FILES/passwd mysql497:500::/home/mysql:/bin/falsenginx496:501::/home/nginx:/sbin/nologinzabbix495:497:ZabbixMonitoringSystem:/var/lib/zabbix:/sbin/nologinhaproxy500:502::/home/haproxy:/bin/bashtcpdump72:72::/:/sbin/nologin

2、恢复目录deletetest

[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-directory  deletetest NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.Searchingfor recoverable inodes in directory deletetest ... 5 recoverable inodes found.Looking through the directory structure for deleted files ... [root@21yunwei_backup /]# cat  RECOVERED_FILES/deletetest/mail/test.py hello Dj

3、恢复所有

[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-allNOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.Searchingfor recoverable inodes in directory / ... 5 recoverable inodes found.Looking through the directory structure for deleted files ... 0 recoverable inodes still lost. [root@21yunwei_backup /]# cd RECOVERED_FILES/[root@21yunwei_backup RECOVERED_FILES]# tree.├── deletetest│   └── mail│       └── test.py└── passwd2 directories, 2 files

4、恢复指定inode

[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-inode 14NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.[root@21yunwei_backup /]# tail  -5/RECOVERED_FILES/file.14mysql497:500::/home/mysql:/bin/falsenginx496:501::/home/nginx:/sbin/nologinzabbix495:497:ZabbixMonitoringSystem:/var/lib/zabbix:/sbin/nologinhaproxy500:502::/home/haproxy:/bin/bashtcpdump72:72::/:/sbin/nologin

注意恢复inode的时候,恢复出来的文件名和之前不一样,需要单独进行改名。内容是没问题的。

更多的extundelete用法请参考extundelete –help选项参数说明,当前恢复所有的操作完成。

来源:www.21yunwei.com/archives/6030
版权归原作者所有,如有侵权,请联系删除。
编辑:jq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206744
  • 终端
    +关注

    关注

    1

    文章

    998

    浏览量

    29601

原文标题:如何在Linux上恢复误删除的文件或目录?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Netapp数据恢复—Netapp存储中卷被误删除的数据恢复案例

    NetApp存储数据恢复环境: NetApp FAS某型号存储,该NetApp存储中有96块扇区大小是520字节的SAS硬盘。存储中的lun都映射给小型机使用,存放Oracle数据库文件,采用
    的头像 发表于 04-18 15:52 121次阅读
    Netapp数据<b class='flag-5'>恢复</b>—Netapp存储中卷被<b class='flag-5'>误删除</b>的数据<b class='flag-5'>恢复</b>案例

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

    文件和一个raw格式的磁盘文件,用户需要恢复的数据是raw格式的磁盘文件。这几台被误删除的虚拟机存放的是数据库,程序代码等数据。
    的头像 发表于 04-17 14:22 88次阅读
    虚拟机数据<b class='flag-5'>恢复</b>—EXT4<b class='flag-5'>文件</b>系统下KVM虚拟机数据<b class='flag-5'>恢复</b>案例

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

    、工具和步骤。 一、 数据恢复方法: 垃圾箱恢复:当我们删除文件时,它们通常被送往电脑的垃圾箱,我们可以在垃圾箱中找回已删除
    的头像 发表于 01-25 11:10 618次阅读

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

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

    Linux目录权限给指定用户

    Linux是一个开放源代码的操作系统,它基于Unix的设计原则,提供了丰富的权限管理功能,允许用户对系统中的文件目录进行精确的控制。在Linux中,每个
    的头像 发表于 11-23 10:30 2987次阅读

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

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

    linux删除文件命令rm

    Linux系统中,可以使用rm命令来删除文件目录。该命令的功能是删除一个目录中的一个或多个
    的头像 发表于 11-13 16:42 435次阅读

    数据库数据恢复—MySQL数据库表误删除记录的数据恢复案例

    数据库数据恢复环境: 一台本地windows sever操作系统服务器,服务器上部署mysql数据库单实例,引擎类型为innodb,表内数据存储所使用表空间类型为独立表空间。无数据库备份,未开启
    的头像 发表于 11-09 15:16 672次阅读
    数据库数据<b class='flag-5'>恢复</b>—MySQL数据库表<b class='flag-5'>误删除</b>记录的数据<b class='flag-5'>恢复</b>案例

    linux中rm和rmdir的区别

    文件。当使用 rm 删除目录时,必须使用递归选项,否则将无法删除非空目录。此外, rm 命令没有验证步骤,因此
    的头像 发表于 11-08 14:16 735次阅读

    linux删除文件的命令

    Linux中,可以使用 rm 命令来删除文件。该命令有多个参数和选项可供使用,以根据不同的情况进行文件删除操作。例如: rm 命令后面跟上
    的头像 发表于 11-08 14:11 341次阅读

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

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

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

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

    恒讯科技分享:如何使用linux删除目录命令?

    学习如何使用Linux命令行对于所有Linux用户和系统管理员来说都是必不可少的。创建文件、导航到文件夹或移动文件等简单的维护任务都可以通过
    的头像 发表于 06-20 17:27 1364次阅读

    恒讯科技分析:如何在Linux上使用rm命令删除文件目录

    本指南展示了如何在Linux中使用rm命令行删除文件目录和其他内容?
    的头像 发表于 06-09 17:02 856次阅读

    【服务器数据恢复】ESXi虚拟磁盘文件误删除的数据恢复案例

    和xxx-000001-delta.vmdk快照文件还在。联系VMware原厂工程师,VMware工程师需要新建一个虚拟机来解决故障问题,但发现ESXi存储空间不足。于是管理员将故障虚拟机下的xxx-flat.vmdk磁盘文件删除
    的头像 发表于 05-25 16:19 1050次阅读
    【服务器数据<b class='flag-5'>恢复</b>】ESXi虚拟磁盘<b class='flag-5'>文件</b>被<b class='flag-5'>误删除</b>的数据<b class='flag-5'>恢复</b>案例