文件被删除后,其元数据首先消失。底层磁盘块通常保持不变,直到它们被重新使用。
RecoverPy 直接扫描原始分区数据,并搜索整个设备上的字节模式。如果这些块尚未被覆盖,仍可通过其内容定位已删除文件的片段。
它允许您检查匹配的块,浏览相邻块,并以直接的方式提取剩余内容。
如果块已消失,恢复是不可能的。如果它们仍然存在,RecoverPy 可以帮助您检索它们。
RecoverPy 不尝试解释文件系统结构或恢复文件名。它专注于暴露磁盘上保留的内容并使其可访问。
访问原始块设备通常需要 sudo。
uvsudo uvx recoverpy
或本地安装:
uv tool install recoverpy
sudo recoverpy
python -m pip install recoverpy
sudo recoverpy
启动 RecoverPy:
sudo recoverpy
使用独特的标识符、配置键或句子片段通常比常见单词产生更好的结果。
RecoverPy 直接操作块设备的原始字节流。
选定的分区以只读模式打开,并使用固定大小的块顺序扫描。扫描器增量处理流,在块之间保持小的重叠,以确保不会错过跨越块边界的匹配。
模式匹配在字节级别进行。对于每个匹配,RecoverPy 记录设备内的精确绝对偏移量。该偏移量成为块检查和导航的参考点。
块读取使用显式偏移量执行,而不是依赖文件系统抽象。这样可以精确定位相邻块,而无需将设备的大部分加载到内存中。
整个扫描基于流式且内存受限:RecoverPy 永远不会将整个分区加载到内存中。
RecoverPy 处理原始数据。它不会自动重建文件或推断文件边界。
结果可能是部分或碎片化的。如果底层块已被覆盖,则无法恢复。
访问块设备通常需要 sudo。为降低进一步覆盖的风险,在恢复期间避免写入目标分区,并在可能时卸载它。
如果您遇到错误或认为某些地方可以改进,请随时提出问题。如果您想自己动手,欢迎提交拉取请求。
项目结构:
recoverpy/ui/ — 文本界面recoverpy/lib/search/ — 流式搜索引擎recoverpy/lib/storage/ — 块和设备访问recoverpy/lib/text/ — 解码工具tests/ — 单元和集成测试uv sync --dev
sudo uv run recoverpy
uv run pytest -q