
Интерактивно находите и восстанавливайте удаленные или 👉 перезаписанные 👈 файлы из вашего терминала
Когда файл удаляется, его метаданные исчезают в первую очередь. Лежащие в основе дисковые блоки часто остаются нетронутыми, пока не будут переиспользованы.
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. Чтобы снизить риск дальнейшей перезаписи, избегайте записи на целевой раздел во время восстановления и по возможности отмонтируйте его.
Если вы столкнулись с ошибкой или считаете, что что-то можно улучшить, смело открывайте issue. А если вы хотите поработать над этим сами, pull request'ы всегда приветствуются.
Структура проекта:
recoverpy/ui/ — текстовый интерфейсrecoverpy/lib/search/ — потоковый поисковый движокrecoverpy/lib/storage/ — доступ к блокам и устройствамrecoverpy/lib/text/ — утилиты декодированияtests/ — модульные и интеграционные тестыuv sync --dev
sudo uv run recoverpy
uv run pytest -q