Монтирование внутренней памяти Android как Mass Storage и восстановление данных

Восстановление данных с внутренней памяти Android, подключенной как Mass Storage

Восстановление данных, удаленных фото и видео, документов и других элементов из внутренней памяти современных Android телефонов и планшетов стало сложной задачей, поскольку внутреннее хранилище подключается по протоколу MTP, а не Mass Storage (как флешка) и привычные программы для восстановления данных не могут найти и восстановить файлы в этом режиме.

Существующие популярные программы для восстановления данных на Android (см. Восстановление данных на Android) пробуют обойти это: в автоматическом режиме получить root-доступ (либо предоставляя сделать это пользователю), а затем — прямой доступ к хранилищу устройства, но это работает не для всех устройств.

Однако, существует способ вручную смонтировать (подключить) внутреннее хранилище Android как флешку (Mass Storage Device) с помощью команд ADB, а затем использовать любую программу восстановления данных, работающую с файловой системой ext4, использующуюся на этом хранилище, например, PhotoRec или R-Studio. О подключении внутреннего хранилища в режиме Mass Storage и последующем восстановлении данных из внутренней памяти Android, в том числе после сброса на заводские настройки (хард ресета) и пойдет речь в данной инструкции.

Предупреждение: описываемый способ не для начинающих. Если вы относите себя к ним, то какие-то пункты могут оказаться непонятными, а результат действий не обязательно будет ожидаемым (теоретически, можно сделать хуже). Используйте изложенное только под свою ответственность и с готовностью к тому, что что-то пойдёт не так, а ваше Android устройство больше не включится (но, если всё делать, понимая процесс и без ошибок, этого произойти не должно).

Подготовка к подключению внутреннего хранилища

Все действия, описанные ниже можно выполнить в Windows, Mac OS и Linux. В моем случае использовалась Windows 10 с установленной в ней подсистемой Windows для Linux и Ubuntu Shell из магазина приложений. Установка компонентов Linux не обязательна, все действия можно провести и в командной строке (и отличаться они не будут), но я предпочел этот вариант, так как при использовании ADB Shell в командной строке возникли проблемы с отображением спецсимволов, не влияющие на работу способа, но представляющие неудобства.

Прежде чем начать подключение внутренней памяти Android как флешки в Windows выполните следующие шаги:

  1. Скачайте и распакуйте Android SDK Platform Tools в папку на вашем компьютере. Загрузка доступна на официальном сайте https://developer.android.com/studio/releases/platform-tools.html
  2. Откройте параметры системных переменных среды (например, начав в поиске Windows вводить «переменных», а затем в открывшемся окне свойств системы нажав «Переменные среды». Второй способ: открыть Панель управления — Система — Дополнительные параметры системы — «Переменные среды» на вкладке «Дополнительно»). Настройка переменных среды в Windows
  3. Выберите переменную PATH (не важно, системную или пользовательскую) и нажмите «Изменить».
  4. В следующем окне нажмите «Создать» и укажите путь к папке с Platform Tools из 1-го шага и примените сделанные изменения. Добавление Android Platform Tools в Path

Если вы проделываете указанные действия в Linux или MacOS, то поищите в Интернете, как в этих ОС добавить папку с Android Platform Tools в PATH.

Подключение внутренней памяти Android как Mass Storage Device

Теперь приступаем к основной части этого руководства — непосредственно подключение внутренней памяти Android как флешки к компьютеру.

  1. Перезагрузите ваш телефон или планшет в режиме Recovery. Обычно для этого нужно выключить телефон, затем зажать и удерживать кнопку питания и «громкость вниз» в течение некоторого времени (5-6) секунд, а после появления экрана fastboot выбрать Recovery Mode с помощью кнопок громкости и загрузиться в него, подтвердив выбор коротким нажатием кнопки питания. Для некоторых устройств способ может отличаться, но легко находится в Интернете по запросу: «модель_устройства recovery mode»
  2. Подключите устройство к компьютеру по USB и подождите некоторое время, пока оно не будет настроено. Если по окончании настройки в диспетчере устройств Windows устройство будет отображаться с ошибкой, найдите и установите ADB Driver именно для вашей модели устройства. Проверка драйвера ADB в Windows
  3. Запустите Ubuntu Shell (в моем примере используется именно оболочка Ubuntu под Windows 10), командную строку или терминал Mac и введите adb.exe devices (Примечание: из-под Ubuntu в Windows 10 я использую adb для Windows. Можно было бы установить adb для Linux, но тогда бы он не «видел» подключенных устройств — ограничение функций подсистемы Windows для Linux). Список устройств ADB
  4. Если в результате выполнения команды вы видите подключенное устройство в списке — можно продолжать. Если нет — введите команду fastboot.exe devices
  5. Если в этом случае устройство отобразилось, значит всё подключено правильно, но рекавери не позволяет использовать команды ADB. Вероятно, придется установить кастомный рекавери (рекомендую найти TWRP для вашей модели телефона). Подробнее: Установка кастомного рекавери на Android.
  6. После установки кастомного рекавери, зайдите в него и повторите команду adb.exe devices — если устройство стало видным, можно продолжать.
  7. Введите команду adb.exe shell и нажмите Enter.

В ADB Shell по порядку выполняем следующие команды.

mount | grep /data

В результате получаем имя устройства block, которое будет использовать далее (не теряем его из виду, запоминаем).

Просмотр имени устройства внутреннего хранилища Android

Следующей командной размонтируем раздел data на телефоне, чтобы иметь возможность подключить его как Mass Storage.

umount /data

Далее находит индекс LUN нужного раздела, соответствующего Mass Storage Device

find /sys -name lun*

Будет отображено несколько строк, нас интересуют те, которые имеют в пути f_mass_storage, но пока мы не знаем, какая именно (обычно, заканчивающиеся на просто lun или lun0)

LUN хранилища Android (Mass Storage)

В следующей команде используем имя устройства из первого шага и один из путей с f_mass_storage (один из них соответствует внутренней памяти). Если будет введен неверный, вы получите сообщение об ошибке, тогда пробуем следующий.

echo /dev/block/mmcblk0p42 > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
Подключение внутреннего хранилища как Mass Storage

Следующий шаг — создаем скрипт, подключающий внутреннее хранилище к основной системе (всё, что ниже — одна длинная строка).

echo "echo 0 > /sys/devices/virtual/android_usb/android0/enable && echo \"mass_storage,adb\" > /sys/devices/virtual/android_usb/android0/functions && echo 1 > /sys/devices/virtual/android_usb/android0/enable" > enable_mass_storage_android.sh

Выполняем скрипт

sh enable_mass_storage_android.sh
Монтирование внутреннего хранилища Android как флешки (Mass Storage)

В этот момент сессия ADB Shell будет закрыта, а к системе будет подключен новый диск («флешка»), представляющий собой внутреннюю память Android.

Внутреннее хранилище Android подключено в Windows

При этом, в случае Windows вас могут попросить отформатировать накопитель — не делайте этого (просто Windows не умеет работать с файловой системой ext3/4, но многие программы для восстановления данных умеют).

Восстановление данных из подключенного внутреннего хранилища Android

Теперь, когда внутренняя память подключена как обычный накопитель, мы можем использовать любую программу для восстановления данных, которая умеет работать с разделами Linux, например, бесплатную PhotoRec (доступную для всех распространенных ОС) или платную R-Studio.

Я пробую выполнить действия с PhotoRec:

  1. Скачиваем и распаковываем PhotoRec с официального сайта https://www.cgsecurity.org/wiki/TestDisk_Download
  2. Запускаем программу, для Windows и запуска программы в графическом режиме запустите файл qphotorec_win.exe (подробнее: восстановление данных в PhotoRec).
  3. В главном окне программы вверху выбираем устройство Linux (тот новый диск, который мы подключили). Ниже указываем папку для восстановления данных, а также выбираем тип файловой системы ext2/ext3/ext Если вам требуются файлы лишь определенного типа, рекомендую указать их вручную (кнопка «Форматы файлов»), так процесс пойдет быстрее. Восстановление данных из внутренней памяти Android в PhotoRec
  4. Еще раз убедитесь, что выбрана нужная файловая система (иногда переключается «сама»).
  5. Запустите поиск файлов (находиться они начнут на втором проходе, первый — поиск заголовков файлов). При нахождении, они автоматически будут восстановлены в указанную вами папку. Процесс восстановления данных из внутренней памяти

В моем эксперименте из 30 удаленных из внутренней памяти фотографий в идеальном состоянии было восстановлено 10 (лучше, чем ничего), для остальных — только миниатюры, также были найдены скриншоты png, сделанные ещё до хард-ресета. R-Studio показала примерно тот же результат.

Данные, восстановленные из внутренней памяти Android

Но, так или иначе, это не проблема способа, который работает, а проблема эффективности восстановления данных как таковой в некоторых сценариях. Так же отмечу, что DiskDigger Photo Recovery (в режиме глубокого сканирования с root) и Wondershare Dr. Fone for Android показали сильно худший результат на том же устройстве. Конечно, вы можете попробовать и любые другие средства, позволяющие восстанавливать файлы с разделов с файловой системой Linux.

По окончании процесса восстановления, извлеките подключенное USB устройство (используя соответствующие способы вашей операционной системы).

Отключить внутреннее хранилище Android

Затем можно просто перезагрузить телефон, выбрав соответствующий пункт в меню рекавери.

Комментарии (121) к Монтирование внутренней памяти Android как Mass Storage и восстановление данных

  • Павел

    Доброго дня!
    Получается так:
    (лог)

    Ответить

    • Dmitry

      Здравствуйте.
      А вы текст прямо копировали из консоли? Если да, то у вас строка выглядит grep /data вместо mount | grep /data

      Ответить

      • Павел

        adb.exe shell
        mount | grep /data

        Ввёл mount | grep /data

        Ответить

        • Dmitry

          И в ответ ничего? Странно… у меня нет ответа. Должен либо как на скрине ответить, либо об ошибке сообщить.

          Ответить

  • Павел

    Правильно я понимаю, что при включенном телефоне такое не провернуть? На LG K5 нужно установить кастомное recovery, но для него ещё и загрузчик разблокировать (удалятся все файлы, а мне их нужно восстановить).

    Ответить

    • Dmitry

      Здравствуйте. При разблокировке загрузчика файлы не удаляются….

      Ответить

      • Mork

        Давным давно в андроиде после сброса удаляются все файлы со смартфона — зто так тупо всё потерять, если он происходит из-за глюка. А сброс после разблока загрузчика был и есть всегда

        Ответить

  • Евгений

    Не работает ничего не происходит как висел mtp так и висит

    Ответить

  • Алексей

    Статья конечно крутая, но для людей не объяснено конкретно в каких случаях этот метод подходит. У всех проблемы разные, и люди пытаются натянуть этот метод на все случаи жизни. Я так понимаю, что если данные стерты и устройство загружается — общий подход — включаем дебуг отладку, рутируем (методов масса), затем загружаем приложение востановления данных типа R-studio, Recuva и под андроидом восстанавливаем. Если же устройство софтовый полу-кирпич (циклится при загрузке), то нужно вначале определится стерты ли данные в результате события (вода, флеши, апдейты, падения и т.п). Для этого флешим кастомную прошивку типа CWM/Phils или TWRP. Для Philz загружаем через дополнительную sdcard1 файловый менеджер AROMAFM, а в TWRP менеджер уже есть. Переписываем что нужно на sdcard1 и делаем бекап. Затем вайпим все через factory reset. Получаем и работающий мобильный и все данные (не всегда флеши рековери и новых прошивок и вайпы через фактори ресеты ревльно удаляют данные пользователя, поскольку раздел data/media часто имеет ограничения только для чтения) . Если же данные были стерты, но имеем уже работающий телефон — переходим установке приложений восстановления под андроид как указано выше (R-Studio/Recuva) и восстанавливаем, так как заводские настройки в силе и ключи шифрования не сброшены. Далее синхронизация с гуглом и т.п. У меня так сработало на Samsubg Galaxy 3 i9300.

    Ответить

    • Евгений

      А как поставить twrp если ос не загружаеться?

      Ответить

      • Евгений

        Я так понимаю что twrp можна поставить Только с включенной отладкой по usb а как ее включить если ос не грузит?

        Ответить

  • Андрей

    Вот вы не конкретные конечно! Статья Шикарна,инфа просто блеск (я серьезно) но я 2 часа потратил на то чтобы понять что выполнение скрипта (последняя строка «sh enable_storage… .sh» выполняется В ТЕРМИНАЛЕ РЕКАВЕРИ! я этот код раз 20 вводил, снёс загрузчик в первый раз, благо прошил без юзердаты, тупо даунлоад прелоадера и систем. поясните пожалуйста в статье. С уважением.

    Ответить

    • Павел

      а у меня после выполнения скрипта, ADB отцепляется в винде а диск не появляется, увы (((

      Ответить

      • Dmitry

        А в управлении дисками тоже ничего нового? (в проводнике может не появиться, тогда в diskmgmt.msc посмотреть)

        Ответить

        • Василий

          У меня он тоже не появился, но я заметил что слетели драйвера, обновил и сразу же появился диск на линукс)

          Ответить

      • babilonianin

        Доброго времени суток. Если у вас не появляется диск, попробуйте вводить последнюю команду на телефоне (меню twrp -> дополнительно->терминал — > вводим sh enable_mass_storage_android.sh ). Мне помогло и диск появился.

        Ответить

    • Дмитрий

      Вот спасибо тебе, человече, я уж отчаялся.

      Ответить

  • Иван

    Здравствуйте! Возникла такая проблема: после ввода
    find /sys -name lun*
    выходит это:
    find: /sys/kernel/slab/L2TP/IPv6: No such file or directory
    find: /sys/kernel/slab/L2TP/IP: No such file or directory
    А если в проводнике в рекавери посмотреть путь
    /sys/devices/virtual/android_usb/android0/
    то видно содержание: f_audio_source, f_midi, power, state, subsystem, uevent.
    f_mass_storage нет. Естественно, если ввести следующую команду, то выходит ошибка
    ~ # ←[6necho /dev/block/mmcblk0p64 > /sys/devices/virtual/android_usb/android0/f
    _mas
    s_storage/lun/file
    /sbin/sh: can’t create /sys/devices/virtual/android_usb/android0/f_mass_storage/
    lun/file: nonexistent directory

    Заменять /sys/devices/virtual/android_usb/android0/f_mass_storage/
    lun/file на /sys/devices/virtual/android_usb/android0/f_mass_storage/
    lun0/file пробовал, ничего не изменяется

    Ответить

    • Dmitry

      Здравствуйте.
      Судя по всему, у вас как-то нестандартно организовано хранилище.
      Где-нибудь еще в sys не видно ничего связанного с mass_storage?

      Ответить

      • Матросов

        Здравтвуйте, Дмитрий.
        таже проблема — нет таких папок по такому адресу(
        более того: в sys вообще нет папок со словами mass и storage.
        Sharp Aquos S3.

        Ответить

    • Слава

      у меня такая же проблема. третий день бьюсь. как решить?

      Ответить

      • Матросов

        Слава, найди меня в вк, фб, телега, Александр Матросов Ижевск. Так хоть однажды кто-то из нас найдет ответ.

        Ответить

  • Михаил

    Здравствуйте!
    Lenovo s90-a 5.0.2
    umount /data
    umount: can’t umount /data: Operation not permitted»
    не размонтирует и соответственно не дает доступ далее.
    Что нибудь можете подсказать?

    Ответить

    • Dmitry

      При этом телефон в рекавери находится? Тогда странно. Я хоть и не часто вообще все это проделываю, но с описанной проблемой пока не сталкивался.

      Ответить

  • Игорь

    Здравствуйте!
    На скриншотах видно, что программа выполняется от суперпользователя.
    У меня она почему-то выполняется от обычного пользователя, а если запустить от суперпользователя, то появляется ошибка «adb.exe: command not found»
    Пробовал прописывать переменную path как у пользователя, так и в системных переменных.

    Ответить

  • Вадим

    Здравствуйте, такой вопрос. У меня Meizu Pro 7 Plus и в режиме рекавери ноутбук видит телефон не как Android Device, а как пустой диск с названием recovery. И команда «adb.exe devices» не видит его, зато, при запущенной системе без режима recovery — всё видит отлично. Как быть, в чём может крыться проблема?

    Ответить

    • Dmitry

      В особенностях рекавери предполагаю на этом аппарате. Можно пробовать накатить TWRP и уже там делать (но ответственности я не несу — все это не всегда без проблем заканчивается).

      Ответить

      • Валера

        Но ведь если накатывать TWRP — это неизбежно приведёт к удалению всех файлов с телефона (по крайней мере насколько я понял из разных инструкций), а следовательно для восстановления данных это не очень подходит.

        Ответить

  • nso

    Заметки на полях)
    1. Полезно заранее посмотреть пути на смарте. Так я обнаружил, что luns — это файл, т.е.отпадает, а в пути к lun имеется симлинк. Поэтому, столкнувшись с фиаско, использовал также прямой путь:
    echo /dev/block/mmcblk0p46 > /sys/devices/platform/msm_hsusb/gadget/lun0/file
    Но сначала я честно поупорствовал с предлагаемымм адресом /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file, запуская скрипт в терминале)
    2. Для возможного разбирательства в файлменеджере TWRP тоже прошёл по этому адресу и скопировал file в свою папочку. Потом убедился, что в нём содержится путь /dev/block/mmcblk0p46 к data.
    3. Постоянно отслеживал «эволюцию» устройства в диспетчере устройств, поэтому не прошляпил (у меня XP) появление бездрайверных устройств. Установка драйверов «автоматом» и дала доступ к Mass Storage Device.

    В общем-то, мало чего целого нашлось в фарше (чем меньше проработает смарт после «трагедии», тем больше найдётся), но для меня важнее всего было другое — более сотни имён скриншотов, содержащих даты и краткое описание экспериментов.
    И всё-таки правильнее всего — как можно быстрее выключать телефон и дампить data, а уж потом работать с полученным образом.

    Ответить

    • Матросов

      nso, помогиии)
      у меня в файловой системе вообще не находится ни одного файла и папки с названием «lun». А как найти симлинк, как достать с него адрес и что с ним делать — я вообще не знаю(
      У меня по твоему адресу
      /sys/devices/platform/… дальше твоих папок нет.

      Короче, я в полном тупике, хотя победа казалась уже так близка.
      всего та найти тот самый путь.. а как это сделать — не ясно(

      Ответить

  • Слава

    Дмитрий, подскажите как с вами связаться напрямую? У меня очень серьезная проблема, готов заплатить за помощь.
    Мой телеграмм (телеграм)
    Напишите пожалуйста

    Ответить

    • Dmitry

      Можно написать на info@этот_сайт. Но вообще какой-либо платной поддержкой я не занимаюсь, посоветовать что-то могу, если есть совет, не более того.

      Ответить

  • Константин

    …добавлю, что телефон нерутованный. Но в данной статье, вроде как, не указывается про необходимость root.

    Ответить

    • Dmitry

      Нет, как правило без него работает.

      Ответить

  • Vetal

    umount /data
    umount: /data: Operation not permitted

    10 андроид на Sony XZ2 Compact

    Без рута никак не победить?

    Ответить

  • Сергей

    Здравствуйте. Хотел подключить тел как флешку, теперь ноутбук не видит смартфон вообще. Все делал по инструкции, как теперь исправить?

    Ответить

    • Dmitry

      Здравствуйте. А если просто отладку по USB отключить?

      Ответить

  • Сергей

    все получчилось, но пк запрашвает форматирование телефона перед использованием.

    Ответить

    • Dmitry

      Не реагируйте и ничего не форматируйте, просто не обращайте внимание на это сообщение (суть в том, что ПК не знаком с этой файловой системой, но для нашей задачи это не важно — программа с нею знакома).

      Ответить

      • Артём

        А если нет прав доступа, что делать

        Ответить

        • Dmitry

          А можно подробнее, что имеется в виду?

          Ответить

  • BETAJIb

    Mass storage нету есть только usb_storage помогите пожалуйста, у меня фотографии дочки пропадают с крестин и дней рождения… готов заплатить кто реально поможет

    Ответить

  • Muhammad

    /sbin/sh: can’t create enable_mass_storage_android.sh: Read-only file system

    к сожалению это сообщение выдает в предпоследнем пункте, хотя я в тврп снял галку только для чтения.

    Ответить

  • Lena

    Возможно проделать описанное в windows 7 ?

    Ответить

    • Dmitry

      В общем-то да, только не в консоли Linux как у меня в примере будет дело происходить, а в обычной командной строке

      Ответить

  • Александр

    У меня смартфон Xiaomi m2007j20cg. Если перезагрузить его в режим recovery mode (когда на нём отображается меню из трёх пунктов — Reboot, Wipe Data, Connect With MiAssiatant), ни команда adb devices, ни fastboot devices его не будут показывать, как будто он вообще не подключен к компу. Он становится виден, только если выбрать Connect With MiAssiatant (тогда команда adb devices покажет его со статусом sideload) или если просто его штатно включить (тогда adb devices покажет его со статусом device). В общем, мне не удаётся подключить его так, чтобы он был виден для команды adb devices и в результатах её отображался б со статусом recovery, как у вас в примере. Это значит, я что-то делаю не так? Можете посоветовать что-нибудь? Когда пытаюсь выполнять ваш алгоритм действий во варианте Connect With MiAssiatant, получается ошибка при команде adb shell (просто пишет «error: closed»). При обычном же включении не позволяет выполнить команду umount /data.

    Ответить

    • Михаил

      Такая же беда на redmi 8pro. Подскажите, удалось ли решить? И если да — то как?

      Ответить

  • Максим

    Здраствуйте, Дмитрий! А что, Вы, можете подсказать, счастливым обладателям телефонов на Симбиан? Я случайно, удалил в календаре записанные дела и теперь не могу их восстановить.

    Ответить

    • Dmitry

      К сожалению, ничего)) Во времена Симбиан я не мог себе такой позволить (хотя очень хотелось), а как смог, уж сразу начал с Windows Mobile.
      Так что опыта с этой операционкой практически не имею и особенностей не знаю (пару раз аську кому-то настраивал только).

      Ответить

      • Максим

        Ясно, буду искать дальше. Благодарю Вас, за ответ.

        Ответить

  • boss911

    Здравствуйте! ADB девайс видит, дохожу до этапа поиска индекса (директории\й) LUN и на этом все — нет у меня их в /sys. О чем это говорит?
    Андроид 8 (сток), TWRP.

    Ответить

    • Dmitry

      Здравствуйте.
      К сожалению, не могу сказать — не знаю. Причем сам, насколько помню, всё это проделывал именно на стоке Android 8 (Nokia) для статьи выше, потом еще на паре телефонов (примерно тогда же — в 2018), особенности какие-то были, но lun находились..

      Ответить

      • Ivan

        Добрый день, Дмитрий, а на Андройде 12 (Samsung) реально так подключить? Как писали ранее: в sys вообще нет папок со словами mass и storage
        Заранее спасибо за ответ!

        Ответить

        • Dmitry

          Здравствуйте!
          К сожалению, тут ответить не могу, не было возможности поэкспериментировать ещё: может и да, а может и есть какие-то ограничения или изменения в новых версиях.

          Ответить

  • Владимир

    Здравствуйте.
    На первой же команде, adb.exe devices, в режиме рекавери у меня пишет unauthorized. И в то же время при просто включенном телефоне на туже команду реагирует адекватно. В чём может быть причина? В телефоне всё что можно включено и авторизованно для данного компьютера.

    Ответить

Оставить комментарий

Интересное
Новое
Список инструкций Windows 11 Windows 10 Подписаться