Відновлення даних, віддалених фото і відео, документів та інших елементів з внутрішньої пам'яті сучасних 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 виконайте наступні кроки:
- Скачайте і розпакуйте Android SDK Platform Tools в папку на вашому комп'ютері. Завантаження доступна на офіційному сайті https://developer.android.com/studio/releases/platform-tools.html
- Відкрийте параметри системних змінних середовища (наприклад, почавши в пошуку Windows вводити "змінних", а потім у вікні властивостей системи натиснувши "Змінні середовища". Другий спосіб: відкрити Панель управління - Система - Додаткові параметри системи - "Змінні середовища" на вкладці " додатково ").
- Виберіть змінну PATH (не важливо, системну або призначену для користувача) і натисніть "Змінити".
- У наступному вікні натисніть "Створити" і вкажіть шлях до папки з Platform Tools з 1-го кроку і застосуєте зроблені зміни.
Якщо ви робите зазначені дії в Linux або MacOS, то пошукайте в Інтернеті, як в цих ОС додати папку з Android Platform Tools в PATH.
Підключення внутрішньої пам'яті Android як Mass Storage Device
Тепер приступаємо до основної частини цього керівництва - безпосередньо підключення внутрішньої пам'яті Android як флешки до комп'ютера.
- Перезавантажте ваш телефон або планшет в режимі Recovery. Зазвичай для цього потрібно вимкнути телефон, потім затиснути і утримувати кнопку живлення і "гучність вниз" протягом деякого часу (5-6) секунд, а після появи екрану fastboot вибрати Recovery Mode за допомогою кнопок гучності і завантажитися в нього, підтвердив вибір коротким натисканням кнопки живлення. Для деяких пристроїв спосіб може відрізнятися, але легко знаходиться в Інтернеті за запитом: "модель_устройства recovery mode"
- Підключіть пристрій до комп'ютера через USB і почекайте якийсь час, поки воно не буде налаштоване. Якщо після закінчення настройки в диспетчері пристроїв Windows пристрій буде відображатися з помилкою, знайдіть і встановіть ADB Driver саме для вашої моделі пристрою.
- Запустіть Ubuntu Shell (в моєму прикладі використовується саме оболонка Ubuntu під Windows 10), командний рядок або термінал Mac і введіть adb.exe devices (Примітка: з-під Ubuntu в Windows 10 я використовую adb для Windows. Можна було б встановити adb для Linux, але тоді б він не "бачив" підключених пристроїв - обмеження функцій підсистеми Windows для Linux).
- Якщо в результаті виконання команди ви бачите зі списку під'єднаний пристрій - можна продовжувати. Якщо немає - введіть команду fastboot.exe devices
- Якщо в цьому випадку пристрій відобразилося, значить все підключено правильно, але рекавери не дозволяє використовувати команди ADB. Ймовірно, доведеться встановити кастомний рекавери (рекомендую знайти TWRP для вашої моделі телефону). Детальніше: Установка кастомними рекавери на Android.
- Після установки кастомними рекавери, зайдіть в нього і повторіть команду adb.exe devices - якщо пристрій став видним, можна продовжувати.
- Введіть команду adb.exe shell і натисніть Enter.
У ADB Shell по порядку виконуємо наступні команди.
mount | grep / data
В результаті отримуємо ім'я пристрою block, яке буде використовувати далі (не втрачаємо його з виду, запам'ятовуємо).
Наступною командної размонтіруем розділ data на телефоні, щоб мати можливість підключити його як Mass Storage.
umount / data
Далі знаходить індекс LUN потрібного розділу, відповідного Mass Storage Device
find / sys -name lun *
Буде відображено кілька рядків, нас цікавлять ті, які мають в дорозі f_mass_storage, Але поки ми не знаємо, яка саме (зазвичай, закінчуються на просто lun або lun0)
У наступній команді використовуємо ім'я пристрою з першого кроку і один із шляхів з f_mass_storage (один з них відповідає внутрішньої пам'яті). Якщо буде введений невірний, ви отримаєте повідомлення про помилку, тоді пробуємо наступний.
echo / dev / block / mmcblk0p42> / sys / devices / virtual / android_usb / android0 / f_mass_storage / lun / file
Наступний крок - створюємо скрипт, що включає карту пам'яті до основної системи (все, що нижче - одна довга рядок).
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
У цей момент сесія ADB Shell буде закрита, а до системи буде підключений новий диск ( "флешка"), що представляє собою внутрішню пам'ять Android.
При цьому, в разі Windows вас можуть попросити відформатувати накопичувач - не робіть цього (просто Windows не вміє працювати з файлової системою ext3 / 4, але багато програм для відновлення даних вміють).
Відновлення даних з підключеного внутрішнього сховища Android
Тепер, коли внутрішня пам'ять підключена як звичайний накопичувач, ми можемо використовувати будь-яку програму для відновлення даних, яка вміє працювати з розділами Linux, наприклад, безкоштовну PhotoRec (доступну для всіх поширених ОС) або платну R-Studio.
Я пробую виконати дії з PhotoRec:
- Завантажуємо і розпаковуємо PhotoRec з офіційного сайту https://www.cgsecurity.org/wiki/TestDisk_Download
- Запускаємо програму, для Windows і запуску програми в графічному режимі запустіть файл qphotorec_win.exe (докладніше: відновлення даних в PhotoRec).
- У головному вікні програми вгорі вибираємо пристрій Linux (той новий диск, який ми підключили). Нижче вказуємо папку для відновлення даних, а також вибираємо тип файлової системи ext2 / ext3 / ext Якщо вам потрібні файли лише певного типу, рекомендую вказати їх вручну (кнопка "Формати файлів"), так процес піде швидше.
- Ще раз переконаєтеся, що обрана потрібна файлова система (іноді перемикається "сама").
- Запустіть пошук файлів (перебувати вони почнуть на другому проході, перший - в назвах файлів). При знаходженні, вони автоматично будуть відновлені в зазначену вами папку.
У моєму експерименті з 30 віддалених з внутрішньої пам'яті фотографій в ідеальному стані було відновлено 10 (краще, ніж нічого), для інших - тільки мініатюри, також були знайдені скріншоти png, зроблені ще до хард-ресета. R-Studio показала приблизно той же результат.
Але, так чи інакше, це не проблема способу, який працює, а проблема ефективності відновлення даних як такої в деяких сценаріях. Так само зазначу, що DiskDigger Photo Recovery (в режимі глибокого сканування з root) і Wondershare Dr. Fone for Android показали сильно найгірший результат на тому ж пристрої. Звичайно, ви можете спробувати і будь-які інші засоби, що дозволяють відновлювати файли з розділів з файловою системою Linux.
Після закінчення процесу відновлення, витягніть підключений USB пристрій (використовуючи відповідні способи вашої операційної системи).
Потім можна просто перезавантажити телефон, вибравши відповідний пункт в меню рекавери.