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

在Linux上恢复误删除的文件或目录误删除 Linux 系统文件了 不用急 本文将给你一个恢复 Linux 文件的方法 让你轻松应对运维中的各风险问题 方法总比问题多 说在前面的话针对日常维护操作 难免会出现文件误删除的操作 大家熟知 Linux 文件系统不同 win 有回收站 删除后的文件可以到垃圾箱寻回 要知道 Linux 文件修复比较费劲 网络上面的文档也是五花八门 所以本次研究一种比较靠谱的文件和目录恢复方法 也给维护人员留一条后路 分析对比 debugfs testdisk6 14 extundelete 对比各自官网介绍和操作说明本次决定研

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

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 py hello delete 

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

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

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

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

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

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

2. 恢复。

恢复命令:

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

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

[root@21yunwei_backup ~]# cd /proc/20464/fd [root@21yunwei_backup fd]# ll total 0 lrwx------ 1 root root 64 Nov 15 18:12 0 > /dev/pts/1 l-wx------ 1 root root 64 Nov 15 18:12 1 > /root/testdelete.py (deleted) lrwx------ 1 root root 64 Nov 15 18:12 2 > /dev/pts/1 

恢复操作:

cp 1 /tmp/testdelete.py 

查看文件:

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

恢复完成。

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

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

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

执行删除操作:

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

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

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

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

umount /dev/vdb1 或者 umount /21yunwei 

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

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

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

wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 tar jxvf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make make install 

扫描误删除的文件:

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

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

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 mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72: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. Searching for 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-all NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Searching for 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 └── passwd 2 directories, 2 files 

4.恢复指定inode

[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-inode 14 NOTICE: 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.14 mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin 

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

CentOS下extundelete误删除Linux系统文件

误删除Linux系统文件了?不用急,本文将给你一个恢复Linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~

说在前面的话

Linux下文件误删除,使用extundelete恢复测试过程

1、给虚拟主机添加一块磁盘,磁盘为/dev/sdb,如下:

在这里插入图片描述

2、格式化磁盘,并进行挂载

# mkfs.ext4 /dev/sdb  # mkdir /usr/local/dbdata/  # mount /dev/sdb /usr/local/dbdata/  

在这里插入图片描述

3、测试误操作删除以下文件

/usr/local/dbdata/gperftools-2.4.tar.gz #文件 /usr/local/dbdata/pcre-8.32 #目录 

执行误操作:

# rm -rf /usr/local/dbdata/gperftools-2.4.tar.gz /usr/local/dbdata/pcre-8.32  

4、将误操作所在分区进行只读保护

如果确定文件被误删,在没有备份的情况下请马上对分区实施写入保护(预防新的写入覆盖误删的块数据,因此权限给只读):

# mount -o remount,ro /dev/sdb  # mount -o remount,ro /usr/local/dbdata/  

5、数据恢复工具安装

# wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2  
# yum -y install gcc-c++ e2fsprogs.x86_64 e2fsprogs-devel.x86_64  # tar -jxvf extundelete-0.2.4.tar.bz2  # cd extundelete-0.2.4  # ./configure # make && make install  

验证安装结果

# extundelete -v  

6、文件恢复过程

# extundelete /dev/sdb --inode 2  

在这里插入图片描述
从圈出来的可以看到,有以下两个

gperftools-2.4.tar.gz 15 Deleted pcre-8.32  Deleted 
# extundelete /dev/sdb --restore-file gperftools-2.4.tar.gz  

在这里插入图片描述
恢复目录(根据目录名恢复):

# extundelete /dev/sdb --restore-directory pcre-8.32  

参考链接 :

误删除Linux系统文件了?这个方法教你解决 : https://mp.weixin..com/s/4X0sog_pKpPdpjuK6uW7UA

在Linux上恢复误删除的文件或目录 :https://mp.weixin..com/s/BCizBgvkGClWW8bex-s5tQ

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211126.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:09
下一篇 2026年3月18日 下午11:09


相关推荐

  • TPS、QPS、吞吐量,如何计算

    TPS、QPS、吞吐量,如何计算1 何为 TPS TPS transactionp 代表每秒执行的事务数量 可基于测试周期内完成的事务数量计算得出 例如 用户每分钟执行 6 个事务 TPS 为 6 60s 0 10TPS 同时我们会知道事务的响应时间 或节拍 60 秒完成 6 个事务 代表每个事务的响应时间或节拍为 10 秒

    2026年3月26日
    2
  • VMware下安装centos7.8及相关配置

    VMware下安装centos7.8及相关配置第一步:下载centos7.8下载地址:http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/版本选择(此处我选择DVD版):CentOS-7-x86_64-DVD-1810.iso标准安装版,一般下载这个就可以了(推荐)CentOS-7-x86_64-NetInstall-1810.iso网络安装镜像CentOS-7-x86_64-Everything-1810.iso对完整版安装盘的软件进行补充,集成所有软件CentO.

    2022年5月30日
    31
  • 复变函数与积分变换系列(二) – 复变函数的求导

    复变函数与积分变换系列(二) – 复变函数的求导复变函数的求导 Author Benjamin TOC 1 复变函数求导 1 1 函数在某点可导 可微 的充要条件 uuu 在该点连续 vvv 在该点连续满足 Cauchy Reimann 方程 KaTeXparseer Expected got part atposition7 frac p a r t u p

    2025年7月10日
    5
  • signal SIGABRT

    往往是,一个对象释放了多次,即多次释放。多为粗心所致。还有一种过渡释放,很隐蔽。查了很久才知道!NSUserDefaults*userDefault=[NSUserDefaultsstandardUserDefaults];self.arrCollectionData=[userDefaultobjectForKey:@”TV_Collection”];…

    2022年4月7日
    91
  • Flex与java通信

    Flex与java通信1 MXML 文件 nbsp nbsp 2 xml 文件 java src TestRemote nbsp 3 java 文件 publicclassT publicString System out println aaa return RemoteSucces

    2026年3月26日
    2
  • 下列那个类有获取PropertyDescriptor实例的方法_java反射怎么理解

    下列那个类有获取PropertyDescriptor实例的方法_java反射怎么理解JAVA中反射机制(JavaBean的内省与BeanUtils库)内省(Introspector)是Java语言对JavaBean类属性、事件的一种缺省处理方法。  JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(ValueOb…

    2022年10月1日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号