ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

开源数据恢复:三步找回分区与误删文件

开源数据恢复:三步找回分区与误删文件 开源数据恢复三步找回分区与误删文件【免费下载链接】testdiskTestDisk PhotoRec项目地址: https://gitcode.com/gh_mirrors/te/testdisk凌晨三点你在装双系统安装器里刚把一块还存着数据的分区删了——点下去那一秒你就意识到不对劲手开始抖。先别慌深呼吸此刻数据大概率还在盘里丢的只是指向它的索引。TestDisk 和 PhotoRec 是一对免费的开源数据恢复工具TestDisk 负责分区表修复把丢失的分区结构找回来PhotoRec 负责文件级恢复从磁盘扇区里把文件一个个捞出来。两者覆盖 480 多种文件格式全程命令行就能完成咱们按恢复的实际流程一步步走。数据丢了到底丢的是什么先用两句话建立心智模型后面选哪条路就清楚了分区表没了 ≠ 文件没了。分区表相当于书的目录记录哪个分区占盘面的哪一段。误删分区大多只是把目录撕掉了正文还在。这是 TestDisk 的地盘扫描全盘找到分区边界的残留重写分区表分区处理逻辑分布在 src/partgpt.cGPT和 src/msdos.cMBR/DOS这些模块里。格式化 ≠ 清空数据。快速格式化删掉的是文件的分配表文件内容本身还在。PhotoRec 根本不看分配表它逐扇区扫描看到 JPEG 的文件头 FF D8 就开始拷贝这叫按签名恢复。全部 480 多种格式的识别逻辑集中在 src/filegen.c 和各file_*.c文件里。一句话分工TestDisk 管骨架分区结构PhotoRec 管血肉文件内容。动手前先判断自己属于哪种情况你的情况首选为什么分区表里分区消失、盘无法挂载TestDisk 分区表修复分区表回来整个文件系统直接可用分区正常但文件误删或误格式化PhotoRec 签名恢复分配表已清空只能按文件头捞盘有坏道、异响先做镜像再决定直接读写可能让情况更糟同时踩中几种情况时先做 TestDisk 那一环再做 PhotoRec顺序别反。动手评估 → 准备 → 操作 → 验证第一步评估先用sudo fdisk -l确认目标设备假设是 /dev/sdb再回答两个问题盘还能正常转吗分区表还在吗SMART 报坏道或有异响直接跳到场景三先做镜像盘健康、只是删了分区或误格式化走场景一或场景二。⚠️ 提示从发现数据丢失那一刻起停止对这个盘的一切写入——不挂载、不存东西。每写入一份新数据就多覆盖掉一点本可以救回的内容。第二步准备——安装工具、做镜像# 一行安装testdisk 和 photorec 都会带上 sudo apt-get install testdisk # CentOS 系用 yummacOS 用 brew install testdisk想要最新版可以从仓库拉源码自行编译跑一遍 autogen.sh 再 configure、make 即可。健康的盘可以跳过镜像直接操作但盘有一丝不对劲时镜像就是唯一操作对象# 用 ddrescue 做镜像存到另一块盘遇到坏扇区自动跳过并记录 sudo ddrescue -f /dev/sdb /data/recovery/sdb.img /data/recovery/sdb.log # 中断后重新执行并加 -r 即可断点续传后面所有命令都可以把 /dev/sdb 换成 /data/recovery/sdb.img——镜像的意义就在这原盘从此不再受任何伤害。第三步操作——三个场景场景一误删分区用 TestDisk 做分区表修复# 选设备 → 选分区表类型常见选 Intel/IBM→ 进入 [Analyse] sudo testdisk /dev/sdb在 Analyse 界面按 [Quick Search]找到分区后标 P主分区或 L逻辑分区确认无误按 [Write] 写回。快速搜索没找到就换 [Deeper Search]全盘扫分区签名慢但能救回多数看不到的情况。⚠️ 提示[Analyse] 显示一堆乱码或分区大小明显不对多半是分区表类型选错了改选 Other 再跑一次 Quick Search。场景二格式化后恢复PhotoRec 使用教程的核心操作# 先指定恢复文件的输出目录再指定要扫描的设备 sudo photorec /d /data/recovery/sdb /dev/sdb1交互中先选文件系统类型不确定就选 Other确认输出位置后按 [Search]。PhotoRec 按签名扫描文件按类型分目录输出recup_dir.1、recup_dir.2……。注意恢复出的文件没有原始文件名只有类型加序号这是签名恢复的固有代价重要文件恢复后记得人工归类。⚠️ 提示只要照片这类某一种文件时在文件类型选择界面把其他格式全取消扫描时间能砍一大半盘很大且确定文件在前半段就别选 Whole。场景三磁盘物理损伤第一步永远是 ddrescue 做镜像命令见第二步千万不要直接对损伤盘跑 TestDisk 或 PhotoRec。ddrescue 持续报错就用-b 512降低读取粒度再试配合-r断点续传。镜像做好后回到场景一或场景二照做设备换成镜像路径。如果 SMART 显示大量重映射扇区联系专业恢复机构比硬试更现实。第四步验证——文件能打开才算完写回分区表后先卸载再重新挂载跑一次 fsck 检查一致性NTFS 用ntfsfix替代。PhotoRec 捞出的文件抽几个打开试试图能预览、视频能播放、文档能打开才算通过。恢复的文件如果开头正常但中途截断多半是文件碎片化导致签名扫描中断换个扫描参数再来一轮即可。进阶常用参数速查和给开发者的彩蛋这个版本 photorec 的命令行参数不多记住这几个就够/d dir指定恢复文件保存目录/log生成 photorec.log 便于事后复盘/logjson fileJSON 格式日志方便脚本解析/debug输出调试信息扫描行为异常时用/version打印版本testdisk 对应支持/log、/debug、/version。性能上它是单线程扫描无法加线程提速大盘的提速空间主要在读盘本身程序按块读取、不整盘缓存内存紧张也能跑不用额外调低内存模式。彩蛋想让 PhotoRec 认得一种新文件格式成本比想象中低。在 src/ 下建一个file_xxx.c声明一个file_hint_t描述格式并注册文件头签名检测入口// src/file_xxx.c每种格式声明一个 file_hint_t const file_hint_t file_hint_xxx { .extension xxx, // 恢复出的文件扩展名 .description XXX file, // 界面中的格式描述 .recover 1, .enable_by_default 1, .register_header_check register_header_check_xxx };再实现register_header_check_xxx在缓冲区里命中文件头签名就返回非零把新文件加进src/Makefile.am和 filegen 的注册列表重新编译即可。完整样例参考 src/file_jpg.c 里的 JPEG 实现。下次别再走到这一步真遇到数据丢失照着这张清单走停止对受损盘的一切写入少碰一次救回率多一分有坏道或异响的盘先做镜像一切操作都打在镜像上分区表损坏优先走 TestDisk 分区表修复分区回来文件整盘回来文件分配表没了、分区救不回时才下沉到 PhotoRec 签名恢复恢复文件的输出目录永远不要放在被恢复的盘上恢复完先验证重新挂载、fsck、抽开几个文件救回的数据立刻二次备份才算真正落袋最后一句不那么好听但实在的话数据恢复不是万能药丢得越早、覆盖得越少成功率才越高但它永远小于百分之百。与其成为抢救专家不如别走到抢救那一步——重要数据每周备份一次每月用 smartctl 看一眼重映射扇区数关键数据再上个 RAID 或异地备份。希望下次你看到这篇时只是路过而不是凌晨三点。【免费下载链接】testdiskTestDisk PhotoRec项目地址: https://gitcode.com/gh_mirrors/te/testdisk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表