
対話的に削除された、または 👉 上書きされた 👈 ファイルをターミナルから見つけて復元します
ファイルが削除されると、まずメタデータが消失します。しかし、基盤となるディスクブロックは、再利用されるまで多くの場合そのまま残ります。
RecoverPyは、生のパーティションデータを直接スキャンし、デバイス全体にわたってバイトパターンを検索します。ブロックが上書きされていなければ、削除されたファイルの断片をその内容から特定できます。
このツールを使用すると、一致したブロックの調査、隣接ブロックへの移動、残っているデータの抽出を簡単に行えます。
ブロックが既に消えている場合は復元は不可能です。しかし、まだ存在していれば、RecoverPyがそれらを取り出すのに役立ちます。
RecoverPyは、ファイルシステム構造を解釈したり、ファイル名を復元したりしません。ディスク上に残っているものを公開し、アクセス可能にすることに焦点を当てています。
生のブロックデバイスへのアクセスには、通常 sudo が必要です。
uv を使用するsudo uvx recoverpy
またはローカルにインストール:
uv tool install recoverpy
sudo recoverpy
python -m pip install recoverpy
sudo recoverpy
RecoverPyを起動:
sudo recoverpy
一意の識別子、設定キー、文の断片などを使用すると、一般的な単語よりも良い結果が得られる傾向があります。
RecoverPyは、ブロックデバイスの生のバイトストリーム上で直接動作します。
選択したパーティションは読み取り専用モードで開かれ、固定サイズのチャンクを使用して順次スキャンされます。スキャナーはストリームをインクリメンタルに処理し、チャンク間で小さなオーバーラップを維持することで、チャンク境界をまたがる一致を見逃さないようにします。
パターンマッチングはバイトレベルで実行されます。一致するたびに、RecoverPyはデバイス内の正確な絶対オフセットを記録します。このオフセットがブロック調査とナビゲーションの基準点となります。
ブロック読み取りは、ファイルシステムの抽象化に依存せず、明示的なオフセットを使用して実行されます。これにより、デバイスの大部分をメモリに読み込むことなく、隣接するブロックへの正確なアクセスが可能になります。
スキャン全体はストリーミングベースでメモリ使用量が制限されています。RecoverPyはパーティション全体をメモリに読み込むことはありません。
RecoverPyは生データを扱います。ファイルを自動的に再構築したり、ファイルの境界を推測したりしません。
結果は部分的または断片化されている場合があります。基盤となるブロックが既に上書きされている場合、復元は不可能です。
ブロックデバイスへのアクセスには通常 sudo が必要です。さらなる上書きのリスクを減らすため、復元中は対象パーティションへの書き込みを避け、可能であればアンマウントしてください。
バグに遭遇した場合や、改善できる点があると思った場合は、お気軽にIssueを開いてください。また、ご自身で作業したい場合は、Pull Requestをいつでも歓迎します。
プロジェクト構成:
recoverpy/ui/ — Textualインターフェースrecoverpy/lib/search/ — ストリーミング検索エンジンrecoverpy/lib/storage/ — ブロックとデバイスへのアクセスrecoverpy/lib/text/ — デコードユーティリティtests/ — 単体テストおよび統合テストuv sync --dev
sudo uv run recoverpy
uv run pytest -q