- Восстановление данных из внутренней памяти на Android для чайников
- Подготовка Android-устройства
- Подготовка PC
- Режим модема по USB
- Какой блок памяти нам нужен?
- Копируем раздел памяти на ПК.
- Конвертируем и восстанавливаем
- Итоги
- Как сделать nandroid backup устройства непосредственно на компьютер, минуя sdcard
- Общая информация
- Требования
- Разделы в устройстве
- Резервное копирование всей памяти (посредством adb)
- Резервное копирование всей памяти (через WiFi)
- Резервное копирование всей памяти (через USB-модем или Wi-Fi-модем)
- Резервное копирование одного Раздела (raw = точная побитовая копия раздела)
- Резервное копирование одного Раздела (tar = копируются только файлы и папки)
Восстановление данных из внутренней памяти на Android для чайников
Сейчас всё больше смартфонов идут без слота для sd-card, и информацию приходится хранить на встроенной памяти с доступом к ней по MTP. Такой режим подключения не позволяет стандартными средствами восстановить данные телефона после wipe’а или случайного удаления.
Сегодня на примере связки Xiaomi Mi2s и Windows 8.1 я постараюсь рассказать, как можно восстановить утерянные данные, кому интересно, добро пожаловать под кат.
Следует заметить, что если вы по ошибке отформатировали внутреннюю память смартфона/планшета/смартпэда, то не стоит расстраиваться, а главное, ни в коем случае не нужно ничего записывать в память устройства, так у вас получится восстановить больше данных.
Протокол MTP не позволяет компьютеру распознать подключенный девайс как USB-накопитель и программы для восстановления не могут просканировать такое устройство и спасти данные, поэтому нам потребуется скопировать весь внутренний раздел памяти в виде образа системы.
Подготовка Android-устройства
Вам понадобится root и включенная отладка по USB.
Подготовка PC
Для того, чтобы скопировать раздел системы, нам понадобится:
- VHDtool;
- Драйвера для вашего устройства (в случае проблем habrahabr.ru/post/205572);
- ADB (adbdriver.com или developer.android.com);
- Сервер FileZilla.
Сперва устанавливаем USB-драйвера для вашего устройства и ADB. После этого советую перезагрузить ПК.
VHDtool
Создаём папку с адресом C:\cygwin64\000 (имя не имеет значения, не стоит только использовать буквы отличные от латиницы), здесь будет лежать наш образ. Копируем в папку VHDtool.exe.
FileZilla
В ходе инсталяции соглашаемся на все стандартные установки.
После установки FileZilla запустится автоматом, но из программы необходимо выйти и запустить её от имени Администратора.
При запуске FileZilla спросит имя сервера, оставляем всё как есть.
Далее заходим Edit — Settings и делаем следующие настройки:
listen on those ports 40
timeout settings — по умолчанию стоит 120, 60, 60, а мы ставим везде 0 и нажимаем ОК.
Заходим в edit — users. В окошке users создаем нового юзера. В моем случае это юзер qwer.
Нажимаем Add — пишем имя — пароль pass — нажимаем ОК.
Далее в том же меню Users, слева выбираем закладку Shared folders. Заходим туда и добавляем папку в которую будет заливаться наш блок. Нажимаем Add и добавляем папку C:\cygwin64\000. В окошке появится путь к этой папке. Если слева от надписи C:\cygwin64\000 не будет буквы H, то нужно нажать Set as home dir. Затем выделив строчку C:\cygwin64\000 нужно отметить права Read и Write галочками. Затем нажать ОК.
Нам понадобятся следующие файлы:
- adb.exe
- AdbWinApi.dll
- adb-windows.exe
- AdbWinUsbApi.dll
- fastboot.exe
Скачать их можно на тут.
Или вытащить из дистрибутива Android SDK.
Копируем их в папку C:\cygwin64\bin
Проверка работы ADB
Запускаем консоль из папки C:\cygwin64\bin, для этого достаточно вписать cmd в адресную строку проводника
Список подключенных девайсов не должен быть пуст, если после строчки List of devices attached пусто, то вы не установили USB-драйвера или не включили отладку по USB.
Когда всё идет хорошо, консоль выглядит так:
20352f2c – мой Xiaomi Mi2s
Режим модема по USB
Теперь нам необходимо узнать, какой IPv4 адрес получил ваш компьютер.
Используем команду ipconfig в командной строке
или
Идем по пути: Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом
Кликаем по надписи ’Подключение по локальной сети’ далее Сведения и копируем адрес IPv4.
В моём случае это 192.168.42.79
Важно! При каждом переподключении USB кабеля и вкл/выкл режима модема IPv4 будет меняться.
Какой блок памяти нам нужен?
Вся память в вашем устройстве делится на логические блоки, нам не нужно качать все, достаточно понять, какой раздел содержит стёртую информацию.
Теперь нам необходимо посмотреть список блоков памяти, для этого вводим построчно следующие команды:
Hint: если вам лень вручную переписывать команды или вы боитесь допустить ошибку, то можно воспользоваться копированием, но вставить привычным способом строчку в консоль не выйдет, поэтому необходимо кликнуть правой кнопкой мыши по окну консоли, далее выбрать изменить > вставить.
После чего во внутренней памяти появится файл list_of_partitions.txt, который нам необходимо скопировать на ПК и изучить.
Скопировать его можно в нашу папку 000 с помощью простой команды (выполнять её следует в отдельном окне командной строки):
Внутренней памяти в моём аппарате 32 GB. Поэтому я ищу самый большой раздел, в моём случае это mmcblk0p27 размером 25,6 GB, у вас он скорее всего будет иметь другое имя, или вообще не будет иметь приписки p**. Безусловно, никто не гарантирует что именно самый большой раздел окажется тем самым на котором еще совсем недавно лежали ваши фото, видео, документы и тд., но в 90% случаев это оказывается именно тот раздел памяти который нам нужен. В противном случае вам придется по порядку копировать все образы и проверять каждый из них.
Копируем раздел памяти на ПК.
Если вы уже закрыли окно cmd, то запускаем его снова.
Вводим команды построчно:
Не забудьте внести соответствующие корректировки в код!
qwer – имя учетной записи в FileZilla (у вас свой если меняли)
pass – пароль от учетной записи в FileZilla (у вас свой если меняли)
40 – порт сервера FileZilla
192.168.42.79 – адрес сервера FileZilla (у вас свой)
mmcblk0p27.raw – копируемый блок памяти (у вас свой)
Открываем второе окно командной строки и вводим команды:
Не забудьте исправить mmcblk0p27 на номер своего блока!
Смотрим в окно FileZilla и видим, что скачивание mmcblk0p27.raw в папку C:\cygwin64\000 началось, теперь можно закрыть окна cygwin и сделать перерыв на чай.
Конвертируем и восстанавливаем
Вернулись? Файл скачался? Отлично. Отключаем телефон, подключаем интернет. Запускаем Cygwin.bat и вводим следующие команды.
Не забудьте исправить mmcblk0p27 на номер своего блока!
У меня конвертирование заняло пару секунд. На выходе у нас получается всё тот же файл mmcblk0p27.raw в папке C:\cygwin64\000, но уже немного другой. Этот сконвертированный файл можно смонтировать как виртуальный диск, или, например через R-studio, произвести восстановление данных непосредственно из нашего образа. Я так и поступил.
Hint: важные моменты пометил желтым.
Итоги
Моей целью было популярным языком объяснить способ копирования системного раздела с android-девайса на ПК, возможно, некоторые упрекнут меня в сложностях, связанных с USB-модемом и ftp, и скажут, что наверняка можно было проще вытащить образ. Отвечу так: я пробовал другими способами, описанными на 4pda и xda-developers, у меня не вышло, зато с ftp получилось со второй попытки, а входе написания статьи всё вообще прошло как по маслу.
У меня получилось восстановить все утерянные фото без потерь в качестве и даже то, что я и не думал восстановить. В ходе восстановления обнаружились фотографии, которые делал в августе прошлого года, когда только купил телефон и тестировал камеру.
В завершении хочется также упомянуть еще одну небольшую утилиту, которая восстанавливает данные — DiskDigger undelete. Она бесплатная, неплохой функционал, но к сожалению, после 40% она у меня вывалилась с ошибкой.
Источник
Как сделать nandroid backup устройства непосредственно на компьютер, минуя sdcard
Так случилось, что мне понадобилось создать полную копию Android устройства, в котором полностью отсутствовали обычно используемые для этого средства. Поиски меня привели на форум XDA, где и была найдена данная всеобъемлющая инструкция, которая пришлась как нельзя кстати и которой я решил поделиться с вами.
В статье имеются мои комментарии, так как применял эту инструкцию для создания backup’a планшета Teclast x98 3g.
Общая информация
Это руководство предназначено для помощи в создании полной резервной копии вашего устройства (вся память со всеми разделами) или одного раздела (в том числе sdcards и т.д.) непосредственно на компьютер:
- На уровне Блоков памяти (с помощью команды dd): для отдельных разделов или полностью всей памяти (все разделы). Резервная копия всегда будет иметь тот же размер, который имеет сохраняемый раздел.
- На уровне Файлов (с помощью команды tar): только для отдельных разделов. Копия будет содержать только файлы и папки, которые имеются на устройстве, таким образом занимая гораздо меньше места, в зависимости от того, на сколько заполненным будет раздел.
Данная инструкция применима, когда аппарат включен или находится в ClockworkMod Recovery (в данных случаях ADB будет работать, в режиме Fastboot данная инструкция не применима). Если дополнительно не будет никаких ремарок, все команды предназначены для использования в Windows. То же касается и Linux с Unix.
Требования
- Рутированное Android устройство;
- Установленный Busybox на устройстве;
- Если вы используете Linux / OS X, у вас уже имеются необходимые инструменты, для Windows скачайте Cygwin и установите вместе с ним netcat, pv и util-linux, выбрав их во время установки (от себя добавлю, что лучше пользоваться терминалом из Cygwin mintty.exe, чем родным для Windows cmd.exe, так как скорость копирования у первого доходила до 3-4 МБ\с, а у cmd.exe — максимум 400 кб\с);
- Установленный ADB;
- Убедитесь, что adb.exe находится в переменной PATH. Посмотрите здесь и здесь, или воспользуйтесь Path Manager;
- Включенный режим отладки по USB на устройстве и соответствующие драйверы, установленные в Windows. Ввод «adb devices» в терминале должен показать ваше устройство.
Разделы в устройстве
Теперь вам необходимо определить разделы и блоки на вашем устройстве, копию которых вы хотите сделать. Для копирования одного раздела можно использовать команды tar или dd, в то время как для копирования всей памяти нужно использовать только dd.
На Teclast x98 3g для определения разделов используются две команды: cat proc/partitions и mount.
127|root@android:/ # mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
[b]/dev/block/mmcblk0p9 /system ext4 ro,noatime,data=ordered 0 0
/dev/block/mmcblk0p7 /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/mmcblk0p6 /config ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/mmcblk0p10 /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
/dev/block/mmcblk0p8 /logs ext4 rw,nosuid,nodev,relatime,data=ordered 0 0[/b]
none /sys/kernel/debug debugfs rw,relatime 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /mnt/libreg tmpfs rw,noexec,noatime,size=4k,mode=700,gid=1003 0 0
/dev/block/vold/179:1 /storage/sdcard_ext fuseblk rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0
root@android:/ # cat proc/partitions
cat proc/partitions
major minor #blocks name
179 10 30535680 mmcblk0
179 11 229376 mmcblk0p1
179 12 32768 mmcblk0p2
179 13 32768 mmcblk0p3
179 14 131072 mmcblk0p4
179 15 131072 mmcblk0p5
179 16 131072 mmcblk0p6
179 17 786432 mmcblk0p7
179 18 262144 mmcblk0p8
179 19 1048576 mmcblk0p9
259 0 27742188 mmcblk0p10
179 30 2048 mmcblk0boot1
179 20 2048 mmcblk0boot0
179 0 30657536 mmcblk1
179 1 30657504 mmcblk1p1
Обычно на Android весь блок, содержащий все разделы, расположен в /dev/block/mmcblk0, а все остальные разделы являются его подразделами. Вы можете установить parted with GPT support, чтобы просмотреть информацию о всех разделах.
Вся память телефона -> /dev/block/mmcblk0 (хотя, на некоторых телефонах, это может быть и sdcard).
Разделы -> все зависит от конкретного устройства. Обычно в /dev/block/platform/dw_mmc/by-name/ перечислены все разделы для данного устройства.
Резервное копирование всей памяти (посредством adb)
Подключите телефон с включенным режимом отладки по USB к компьютеру.
Что касается Teclast x98 3g и того случая, когда аппарат не загружается (bootloop). Очень важно, чтобы до всего этого случившегося был включен режим отладки по USB. Выключите полностью планшет, отсоедините все кабели, дайте пару секунд на «отдых» и подключите кабель от компьютера к планшету, должна появиться такая большая белая батарея, которая будет показывать, что идет процесс зарядки, вот только тогда, даже в выключенном состоянии можно будет работать с аппаратом через терминал и adb.
Запустите Cygwin Терминал и введите (при необходимости замените mmcblk0):
adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0
Вы увидите мигающий курсор на следующей строке слева. На данный момент аппарат ожидает передачи Блока по сети.
Откройте другой Cygwin Терминал и введите:
adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw
Вы увидите, как начнет увеличиваться размер файла до тех пор, пока полностью не скопируется весь выбранный вами Блок. Теперь у вас имеется полный бекап аппарата в raw формате. Вы можете увидеть всё содержимое в скопированном Блоке с помощью gptfdisk, доступного для Windows, Linux и других ОС (официальный сайт или SourceForge). Аналогичное вы сможете сделать при помощи ClockworkMod Recovery, но первоначально необходимо смонтировать Раздел /system, так как в BusyBox, входящем в ClockworkMod, отсутствует netcat, потому вам необходимо использовать netcat из /system раздела Вашего устройства.
При помощи определенных инструментов в Linux вы можете изменять и извлекать необходимые Разделы из всего Блока.
Вы можете использовать ADB через WiFi, аналогично как и Wi-Fi ADB.
Резервное копирование всей памяти (через WiFi)
Необходимо:
- Установленный FTP сервер на компьютере или другом устройстве;
- Пользователь с паролем;
- Установленный порт для FTP сервера, по умолчанию 21, но в данном примере используется 40;
- Домашняя директория пользователя с правами записи.
Правилом хорошего тона будет копирование myfifo в /cache, а не в /data, так как можно случайно затереть важные данные в случае использования raw данных для восстановления.
Запустите Cygwin Терминал и введите:
adb shell
su
mkfifo /cache/myfifo
ftpput -v -u user -p pass -P 40 COMPUTER_IP block.raw /cache/myfifo
Откройте другой Cygwin Терминал и введите:
adb shell
su
dd if=/dev/block/mmcblk0p12 of=/cache/myfifo
Некоторые замечания:
- FIFOs можно сделать только на Linux Native файловых системах, FAT для этого не подойдет;
- Процесс чтения Раздела с устройства никоим образом его не видоизменяет.
Резервное копирование всей памяти (через USB-модем или Wi-Fi-модем)
Для этого необходимо отключить все сетевые соединения на компьютере, кроме того, с помощью которого вы будете осуществлять процесс копирования.
Как только соедините компьютер с Android устройством, вы сможете просмотреть IP компьютера и IP устройства в «Свойствах соединения». IP — будет являться IP самого компьютера, а Gateway будет содержать IP Android устройства.
- Wi-Fi модем: Компьютер Android устройство Интернет
- USB модем:
Компьютер Android устройство Интернет
Компьютерные Android устройство Интернет
Процесс абсолютно аналогичный передачи данных через Wi-Fi, единственное, скорость передачи данных будет значительно выше, потому что компьютер и Android устройство соединены непосредственно, вместо того, чтобы использовать роутер в качестве шлюза. В данном случае шлюзом будет само Android устройство. USB-модем имеет самый высокий уровень передачи данных.
Резервное копирование одного Раздела (raw = точная побитовая копия раздела)
Все аналогично тому, что было описано выше, только необходимо заменить mmcblk0 на соответствующий Раздел. Вы можете использовать в данном конкретном случае ПО для просмотра содержимого скопированного Раздела. В зависимости от файловой системы: DiskInternals Linux Reader, Ext2Read, Ext2 File System Driver for Windows, Ext4Explore, плагин для Total Commander и ImDisk Virtual Disk Driver. Можно также использовать ПО для восстановления данных с отдельных разделов, например, Recuva совместно с VHD Tool или инструменты командной строки, включенные в сами операционные системы.
Резервное копирование одного Раздела (tar = копируются только файлы и папки)
Теперь вы должны знать, где и какой раздел монтируется, например, Firmware смонтирована в /system, которая по сути является ROM.
В данном случае вам придется открыть три Cygwin Терминала, вследствие ограничений, накладываемых самим Android:
Откройте первый Cygwin Терминал и создайте FIFO, например, в /cach, и перенаправте tar в него:
adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox mkfifo /cache/myfifo
/system/xbin/busybox tar -cvf /cache/myfifo /system
Вы должны это сделать потому, что перенаправление tar в stdout (c «-«) не работает на Android и портит сохраняемый файл.
Откройте второй Cygwin Терминал:
adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox cat /cache/myfifo
Откройте третий Cygwin Терминал:
adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > system.tar
Полученный tar файл вы можете просмотреть с помощью Winrar, Total Commander, PeaZip и т.д. Обратите внимание, вы не должны извлекать файлы или редактировать их, так как tar формат сохраняет данные доступа и владельца для каждого файла, которые исчезают при извлечении в FAT / NTFS разделы.
Источник