2026-09-17-U盘误删zyw文件夹恢复报告.md

U 盘误删 zyw 文件夹数据恢复报告


一、结论先行

项目结果
删除的目录根目录 zyw → 内含 私人资料库(15 个子项)
恢复文件数1735(另有 114 个空目录)
恢复数据量298.1 MiB(zip 压缩后 274 MiB)
完整性CRC 全通过 · 文件签名全对 · 簇区间 0 重叠
原始介质全程只读,未写入任何数据

下载地址(局域网)

本机留存路径


二、为什么这次能 100% 恢复

  1. 删除时间很近(当天),被释放的簇尚未被新数据覆盖。
  2. 发现后立刻把 U 盘改为只读挂载,阻断了任何后续写入(这是恢复成功的第一前提)。
  3. exFAT 的删除机制对恢复友好:删除只把目录项 EntryType 的 InUse 位(bit7)清零 (0x85 → 0x05),文件名、首簇号、文件长度全部原样保留, 不像 FAT 那样把首字符覆盖成 0xE5。因此 zyw 这个名字和整棵树的元数据都是完整的。
  4. 该分区上文件普遍为 连续分配(NoFatChain=True),即使 FAT 链已被清空, 仍可按「首簇 + 长度」物理连续读回。

三、技术路线(与上次 ext4 恢复的区别)

本机此前(2026-09-03)为下载中心误删事故做过一次恢复,用的是 ext4magic 基于 ext4 日志恢复 /dev/sda5。该方案无法用于本次场景:

上次(dl-hub 事故)本次(U 盘)
文件系统ext4(有日志)exFAT(无日志、无日志可重放)
可用工具ext4magic / extundeleteext4magic、extundelete 均不适用
恢复依据文件系统日志目录项中残留的元数据

本次采用的流程:

# 1) 立即只读挂载,杜绝写入
sudo mount -o remount,ro /media/zyw/A082-9F64

# 2) 整盘只读镜像(59 GB,约 11 分钟,无读错误)
sudo dd if=/dev/sdc of=/persistent/usb-recover/sdc-A082-9F64.img \
        bs=4M conv=noerror,sync status=progress

# 3) 解析 exFAT 目录项,定位已删除条目(自研解析器)
python3 exfat_scan.py <img>          # 枚举根目录,找到 [已删除] DIR 'zyw' 首簇=327932
python3 exfat_tool.py  <img> list 329167 131072
python3 exfat_tree.py  <img> 327932 131072 --dry     # 干跑清点全树

# 4) 递归恢复
python3 exfat_tree.py  <img> 327932 131072 /persistent/usb-recover/restored

说明:testdisk 7.2(本机已装)支持 exFAT undelete,但它只有 TUI 交互界面、没有非交互批处理模式, 且本机无 tmux/screen,自动化驱动不可靠。因此改用直接解析 exFAT 结构的方式, 全程可脚本化、可复核、可重复。testdisk 已用于独立确认分区与文件系统类型(并以 (RO) 只读方式打开镜像)。 实为兜底手段的 photorec(按签名雕取、会丢失文件名和目录结构)本次无需使用。

四、恢复出的目录结构(顶层)

zyw/
└── 私人资料库/
    ├── seafile-tutorial.doc
    ├── images/  (含 auto-upload/)
    ├── TEMP/    (含 新建文件夹/)
    ├── 上课文件/
    ├── 临时文件夹/
    ├── 学校事务/
    ├── 学生毕业/
    ├── 学生毕业工作/
    ├── 报销/
    ├── 教学工作/
    ├── 教师培训/
    ├── 监考/
    ├── 科研工作/
    ├── 软件/
    └── 随笔/

文件类型分布(按实际签名识别,非按扩展名)

类型数量类型数量
Excel 2007+ (.xlsx)1324PowerPoint (.pptx)15
Word 2007+ (.docx)119Visio (.vsdx)5
JPEG 图片47OOXML / XML8
纯文本63可执行文件 (.exe/.dll)3
PDF 文档34SQLite / RAR / INI5
Word 97-2003 (.doc)33空文件16
Zip 压缩包22加密文档 (CDFV2 Encrypted)2
Windows 快捷方式 (.lnk)22PNG 图片16

五、核验方法与结果

  1. CRC 校验:zip 内 1849 个条目全部通过(ZipFile.testzip() 返回 None)。
  2. 文件签名核验:对全部 1735 个文件跑 file,1324 个 xlsx / 119 个 docx / 47 个 JPEG / 34 个 PDF 等签名与其扩展名一致;抽样确认 seafile-tutorial.doc 为完整 OLE2 Word 文档 (含作者、创建时间、页数、字数等元数据),.jpg 为 1080×2400 实图。
  3. 簇区间重叠自查:1719 个有数据的文件按首簇排序检查,0 处冲突, 证明目录项中的链信息彼此自洽(若元数据被破坏,必然出现两文件争用同一簇)。
  4. 16 个空文件:全部是 随笔/JJwords/ 下写作软件的 .Book / .Comment 伴生文件, 目录项记录的原始长度本就是 0 字节,属正常,非损坏。
  5. 1 个"未识别"文件:上课文件/计算机应用基础/作业收集/424/7、酒店/20220419_1.txt —— 非零字节占比 96.5%、以 02 01 00 00 00 00 开头,是 DLP 透明加密文档 (同批还有 2 个 CDFV2 Encrypted),属原始状态,非恢复损伤。

六、注意事项

七、经验教训

  1. 误删后第一动作是停止写入(卸载或改只读),本次正是靠这一步保住了全部数据。
  2. 恢复要趁早:该 U 盘有 DVR 行车记录(30 GB)与哨兵模式(9.8 GB)在持续写入, 若拖延,被删数据很快会被循环覆盖。
  3. 先做整盘镜像再恢复:镜像使后续所有操作都在副本上进行,原盘零风险、可反复尝试。
  4. 工具要对症:ext4 用 ext4magic/extundelete,exFAT 用 testdisk 或直接解析结构; 签名雕取(photorec)是会丢文件名和目录结构的最后手段,不要一上来就用。
下载此文件