CentOS误删数据后如何用TestDisk恢复文件?

来源:安卓APP网作者:徐致远头衔:网络博主
导读:本期聚焦于徐致远创作的《CentOS误删数据后如何用TestDisk恢复文件?》,敬请观看详情。CentOS 服务器上误删了数据,还能救回来吗?答案取决于你接下来的动作。如果继续写入、安装软件或重启系统,被删除文件很可能被覆盖,恢复难度会急剧上升。TestDisk 是 CGSecurity 开发的开源磁盘恢复套件,能够修复分区表、重建引导记录,并通过配套的 PhotoRec 工具按文件特征恢复误删内容。本文围绕 CentOS 环境展开,先说明事故发生后如何停止写入、只读挂载并安装 TestDisk,再演示分区表恢复和文件扫描的完整命令与交互步骤。最后还会给出恢复后的校验方法和日常防误删策略。内容适合服务器运维、Linux 管理人员以及任何需要紧急找回 CentOS 文件的用户参考。

在 CentOS 上误删数据后,第一步不是重装系统,也不是急着安装各种恢复软件,而是立即停止对目标磁盘的一切写入操作。Linux 删除文件只是把 inode 标记为空闲,真正的数据块仍然留在磁盘上,只要没有被新数据覆盖,就有很大机会恢复。TestDisk 是 CGSecurity 推出的开源磁盘恢复套件,它既能修复被删除的分区、重建引导记录,也能配合 PhotoRec 找回误删文件。本文以 CentOS 为例,演示从只读挂载、安装工具到恢复分区和文件的全过程。

CentOS误删数据后如何用TestDisk恢复文件?

一、停止写入并安装 TestDisk

如果误删的是独立数据盘,立即卸载该分区。比如数据盘挂载在 /data,可以执行 sudo umount /data。如果误删的是根分区下的文件,则不能再直接卸载根目录,应该通过 Live CD、救援模式或其他系统启动,然后把原磁盘挂载为只读。只读挂载的命令通常为 sudo mount -o ro /dev/sda1 /mnt/old,这样可以避免在扫描过程中产生写操作。

CentOS 官方仓库默认没有 TestDisk,需要先启用 EPEL。CentOS 7 使用 yum,CentOS Stream 8/9 使用 dnf,安装方式基本一致。安装完成后可以用 testdisk --version 验证。注意安装操作本身也会写磁盘,所以如果目标磁盘是系统盘,最好在 Live 环境中安装并运行 TestDisk,避免覆盖待恢复数据。

# 启用 EPEL 仓库并安装 TestDisk
sudo yum install epel-release -y
sudo yum install testdisk -y

# 验证安装
testdisk --version
photorec --version

二、用 TestDisk 恢复被删除的分区

如果误删的不是单个文件,而是整个分区,或者分区表在磁盘操作中丢失,系统可能无法挂载原来的数据盘。这时 TestDisk 的分区表恢复功能就派上用场。启动命令为 sudo testdisk /dev/sda,其中 /dev/sda 是待恢复磁盘。TestDisk 会先询问是否创建日志文件,建议选择 Create,这样后续可以查看扫描记录。

进入主界面后选择磁盘、分区表类型。大多数 x86_64 服务器使用 Intel/PC 或 EFI GPT。接着选择 Analyse 分析当前分区结构,TestDisk 会显示已有的分区。执行 Quick Search 后,如果找到被删除的分区,会以 D 标记出来。此时可以继续选择 Deeper Search 深度扫描,以便找到更久以前的分区布局。确认分区参数无误后,再选择 Write 将分区表写回。写操作前强烈建议先备份当前 MBR,可以使用 dd 命令保存前 512 字节,这样即使写错也能回滚。

# 启动 TestDisk 分析分区表
sudo testdisk /dev/sda

# 写回分区表后重新读取
sudo partprobe /dev/sda

# 备份当前 MBR 分区表
sudo dd if=/dev/sda of=/root/mbr-backup.img bs=512 count=1

需要特别注意的是,TestDisk 在分区表恢复阶段不会直接恢复文件内容。如果分区表本来就正常,只是误删了某个目录或文件,那么问题出在文件系统层面,需要借助 PhotoRec 或者专门针对 ext4 的工具继续处理。

三、配合 PhotoRec 恢复误删文件

PhotoRec 是 TestDisk 的同源工具,它不依赖目录结构,而是按照文件头特征扫描磁盘扇区,因此能够找回 rm 删除的文件。运行方式为 sudo photorec /d /mnt/recovery /dev/sda1,其中 /d 参数指定输出目录,/dev/sda1 是待扫描分区。PhotoRec 会要求选择文件系统类型,通常可以选 ext2/ext3/ext4 或 Other。接着在 File Opt 菜单里选择要恢复的文件格式,建议先取消全选,只勾选 doc、jpg、png、zip 等需要找回的类型,这样能减少恢复大量无用文件的时间和磁盘占用。

输出目录一定不能和待扫描分区位于同一磁盘上。例如扫描 /dev/sda1 时,输出到 /dev/sdb1 上的目录;如果输出到同一个磁盘,恢复过程本身会写入大量文件,直接覆盖原始数据。可以先挂载一个独立备份盘到 /mnt/recovery,再执行扫描。恢复完成后,PhotoRec 会生成多个 recup_dir 目录,文件按编号命名,例如 f0123456.jpg。由于文件名无法还原,后续需要根据文件大小、修改时间和内容进行人工筛选。

# 挂载独立备份盘作为恢复输出目录
sudo mkdir /mnt/recovery
sudo mount /dev/sdb1 /mnt/recovery

# 运行 PhotoRec 扫描并恢复
sudo photorec /d /mnt/recovery /dev/sda1

# 查看恢复出的文件类型
file /mnt/recovery/recup_dir.1/*

四、恢复后的验证与长期预防

恢复出来的文件并不总是完整可用。对于图片、压缩包、文档等,可以通过 file 命令查看类型,用 md5sum 计算哈希并与原始备份对比。如果文件可以正常打开,说明数据块基本完整;如果文件大小异常或者打开报错,可能只恢复了一部分。此时不要对原盘再做任何操作,可以尝试用不同参数重新扫描,或者借助 extundelete 等工具补充恢复。

比起事后恢复,日常预防更重要。服务器上可以使用 cron 配合 rsync 做每日增量备份,例如将 /data 同步到 /backup/data。对于误删高频环境,可以安装 trash-cli,把 rm 替换为 trash 命令,删除的文件会进入回收站而不是直接消失。如果底层支持 LVM 或 Btrfs/ZFS,还可以创建快照,为重要目录保留可回滚的时间点。最后,故障发生后一定要保持冷静,先卸载或只读挂载,再制定恢复方案,这样才有最大概率把 CentOS 上的误删数据完整找回来。

CentOS数据恢复TestDisk误删文件恢复修改时间:2026-10-03 14:31:55

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/1003/65137.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。