0

0

Linux怎么恢复删除文件 Linux误删文件数据恢复尝试【救急】

冰火之心

冰火之心

发布时间:2026-02-01 14:38:49

|

282人浏览过

|

来源于php中文网

原创

误删文件后可恢复:一、extundelete恢复ext3/4文件;二、debugfs通过inode提取数据;三、photorec无文件系统扫描;四、检查LVM/Btrfs/ZFS快照或备份;五、dd+grep关键字提取。

linux怎么恢复删除文件 linux误删文件数据恢复尝试【救急】

如果您在Linux系统中误删了重要文件,且尚未重启系统或进行大量写入操作,则存在较高概率恢复数据。以下是几种可行的恢复方法:

一、使用extundelete工具恢复ext3/ext4文件系统中的文件

extundelete专为ext3和ext4文件系统设计,依赖于文件系统未被覆盖的日志信息,适用于删除后立即执行恢复的场景。

1、确认当前分区文件系统类型:运行df -T /path/to/deleted/file,检查输出中对应挂载点的Type字段是否为ext3或ext4。

2、卸载目标分区:执行sudo umount /dev/sdXN(如/dev/sda1),若提示设备忙,可尝试进入单用户模式或使用Live CD/USB启动后操作。

3、安装extundelete:在Ubuntu/Debian系统中运行sudo apt install extundelete;CentOS/RHEL需先启用EPEL源后执行sudo yum install extundelete

4、执行恢复命令:运行sudo extundelete /dev/sdXN --restore-all,所有可恢复文件将生成在当前目录下的RECOVERED_FILES/子目录中。

5、若仅需恢复特定文件,使用sudo extundelete /dev/sdXN --restore-file "relative/path/to/filename",其中路径为相对于该分区根目录的路径。

二、通过debugfs交互式恢复ext系列文件系统中的inode文件

debugfs是ext2/ext3/ext4的底层调试工具,可在不依赖第三方软件的情况下,直接从inode提取已删除但未覆写的数据块内容。

1、确保目标分区已卸载:运行sudo umount /dev/sdXN,避免文件系统处于活动状态。

2、启动debugfs:执行sudo debugfs /dev/sdXN,进入交互界面。

3、列出已删除的inode:输入lsdel,显示所有标记为已删除但仍保留元数据的inode条目,记录目标文件对应的inode编号。

4、查看inode详情:输入stat ,确认其包含有效数据块地址及文件大小。

5、导出原始数据:退出debugfs后,运行sudo debugfs -R "dump /tmp/recovered_file" /dev/sdXN,将指定inode内容保存至临时路径。

三、利用photorec工具进行无文件系统结构的原始数据扫描

photorec忽略文件系统结构,直接扫描磁盘扇区中符合常见文件头尾特征的数据块,适用于格式化后、文件系统损坏或非ext系文件系统(如XFS、Btrfs)的恢复场景。

1、安装testdisk套件:在Ubuntu/Debian中执行sudo apt install testdisk;CentOS/RHEL中运行sudo yum install testdisk

2、以只读方式启动photorec:运行sudo photorec /dev/sdX(注意此处指定整个磁盘设备,而非分区,如/dev/sda)。

3、在菜单中选择对应物理磁盘,按方向键切换至目标分区,按P确认选择。

InsCode
InsCode

InsCode 是CSDN旗下的一个无需安装的编程、协作和分享社区

下载

4、选择文件系统类型:若原为ext4,选Other;若为FAT/NTFS,选对应项;不确定时可保持默认Other

5、设定恢复存储位置:使用Space键切换至空闲且非同一物理磁盘的挂载点(例如/mnt/external),按C开始扫描。

6、扫描完成后,photorec将按文件类型创建子目录(如jpgpdfdocx),恢复出的文件名均为自动生成编号,需人工核对内容。

四、检查是否有可用的文件系统快照或备份副本

部分Linux发行版或管理员可能配置了LVM快照、Btrfs子卷快照、ZFS快照或rsync/cron定时备份,这些机制可在不依赖恢复工具的前提下直接还原原始文件。

1、检查LVM逻辑卷是否存在快照:运行sudo lvs,观察输出中LV列是否含snap字样,以及Origin列是否指向原LV名称。

2、若存在快照,临时挂载:创建挂载点sudo mkdir /mnt/snapshot,执行sudo mount /dev/vg_name/snap_name /mnt/snapshot,从中复制所需文件。

3、检查Btrfs子卷快照:运行sudo btrfs subvolume list /mount/point,查找Creation Time较早且名称含@snapsnapshot的条目。

4、挂载Btrfs快照:执行sudo mount -o subvol=/path/to/snapshot /dev/sdXN /mnt/snapshot,访问并拷贝文件。

5、搜索本地备份文件:执行find /var/backups -name "*filename*" 2>/dev/nullfind /backup -type f -name "*.tar.gz" | xargs -I{} tar -tzf {} | grep -l "target_filename"

五、使用grep结合dd对未挂载分区进行关键字内容提取

当仅需找回含特定文本内容的小型纯文本文件(如配置文件、日志片段),且无法安装额外工具时,可利用dd与grep组合,在原始设备层面搜索残留字符串。

1、确认目标分区已卸载:运行sudo umount /dev/sdXN,防止写入干扰。

2、获取文件中一段唯一可见字符串:例如某配置文件中含database_host = 192.168.1.100,将其作为搜索关键词。

3、执行无缓冲搜索:运行sudo dd if=/dev/sdXN bs=1M | grep -a -B5 -A5 "database_host = 192.168.1.100",-a参数强制二进制搜索,-B/-A分别显示前后5行上下文。

4、若定位到匹配块,记录大致偏移位置(如输出含000a1b2c000类十六进制地址),再用sudo dd if=/dev/sdXN of=/tmp/recovered.txt bs=1 skip=XXXXXX count=YYYYY提取相邻区域。

5、使用file /tmp/recovered.txt验证结果是否为预期文本格式,并手动清理冗余二进制内容。

相关文章

数据恢复工具app
数据恢复工具app

手机里的数据丢失了怎么办?聊天记录不小心删掉了怎么办?不用担心,这里为大家提供了数据恢复工具app下载,安全正规,有需要的小伙伴保存下载,就轻松恢复数据啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

237

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

479

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

785

2023.08.22

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

198

2023.11.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

361

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1503

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

625

2023.11.24

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.2万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号