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

    文章

    11199

    浏览量

    208691
  • 终端
    +关注

    关注

    1

    文章

    1105

    浏览量

    29798

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

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

收藏 人收藏

    评论

    相关推荐

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

    服务器数据恢复环境: 邮件服务器中有一组由8块盘组成的RAID5阵列, 上层是Linux操作系统+EXT3文件系统。 服务器故障: 由于误删除导致
    的头像 发表于 10-23 15:11 102次阅读
    服务器数据<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 137次阅读

    ubuntu删除文件怎么恢复

    Ubuntu系统中,删除文件可以通过多种方法进行恢复。本文将详细介绍Ubuntu系统中删除文件
    的头像 发表于 08-30 15:10 961次阅读

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

    某公司一台NetApp存储,该存储中有24块磁盘。 工作人员误删除了NetApp存储中一个文件夹,文件夹中有非常重要的数据。 数据恢复工程师
    的头像 发表于 08-12 13:35 205次阅读
    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 345次阅读
    虚拟机数据<b class='flag-5'>恢复</b>—KVM虚拟机被<b class='flag-5'>误删除</b>的数据<b class='flag-5'>恢复</b>案例

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

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

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

    1台服务器,Linux操作系统+EXT4文件系统,部署了数台KVM虚拟机,每台虚拟机包含一个qcow2格式的磁盘文件,和一个raw格式的磁盘文件。 工作人员操作失
    的头像 发表于 06-17 15:10 303次阅读
    服务器数据<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 386次阅读
    服务器数据<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 325次阅读

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

    存储卷全部删除并重新分配。完成卷的删除但还没有重新分配的时候,上层业务宕机。运维工程师紧急排查故障情况,发现跑业务的服务器的磁盘都“消失”了,无法访问数据。
    的头像 发表于 04-18 15:52 366次阅读
    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 324次阅读
    虚拟机数据<b class='flag-5'>恢复</b>—EXT4<b class='flag-5'>文件</b>系统下KVM虚拟机数据<b class='flag-5'>恢复</b>案例

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

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

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

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

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

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

    linux删除文件命令rm

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