- Android ADB Backup, Extract, Restore
- Enable Android ADB Backup
- Perform Android ADB Backup
- Extract from Android ADB Backup
- Restore / Repack Android ADB Backup
- Как сделать nandroid backup устройства непосредственно на компьютер, минуя sdcard
- Общая информация
- Требования
- Разделы в устройстве
- Резервное копирование всей памяти (посредством adb)
- Резервное копирование всей памяти (через WiFi)
- Резервное копирование всей памяти (через USB-модем или Wi-Fi-модем)
- Резервное копирование одного Раздела (raw = точная побитовая копия раздела)
- Резервное копирование одного Раздела (tar = копируются только файлы и папки)
Android ADB Backup, Extract, Restore
The Android backup file created using the ADB command is a compressed tar file. Compression is done using the zlib compression library and the DEFLATE compression algorithm. If a password is entered during the backup process, the file is encrypted, else it is only compressed. In this article, we will learn how to perform ADB backups, extract ADB backups and restore or repack ADB backups.
Enable Android ADB Backup
The Android backup feature using adb backup is only available from Android 4.0+. To use this feature, USB debugging (under Settings -> Developer options ) must be enabled on the device.
Also, this feature does not work on all apps. To enable ADB backup for an app, that app must have set the android:allowbackup attribute to true in the Android Manifest ( AndroidManifest.xml ) XML file.
Apps like the Google Authenticator have disabled the ADB backup feature to prevent sensitive information from being extracted from the device. ADB backup will not work on such apps. An attempt to perform an ADB backup on such apps will only generate a dummy file with no valid content inside.
Perform Android ADB Backup
To perform an ADB backup, you will first need to know the package name of the app in question. For example, if you want to perform a backup of the WhatsApp application, the package name would be “ com.whatsapp “.
You can get a list of the installed packages by running the pm list packages command from the ADB shell.
Another easier way is to extract the package name from the app’s Google Play Store web URL. For WhatsApp, the URL is https://play.google.com/store/apps/details?id=com.whatsapp and the package name can be found after the “ id= ” field.
To perform a backup, connect the phone to the computer via USB and run the ADB backup command. If you want to backup WhatsApp, run adb like this:
This will trigger a confirmation dialog prompting you to authorise the backup on your phone as shown below. Click on the “ Back up my data ” button without providing a password. The backup will start only after you click on the button.
Wait for the ADB backup command to complete. It may take a while, depending on the size of the data to be backed up. The backup will be written to the file specified in the “ -f ” option, in our case, it’s “ com.whatsapp.ab “. The “ .ab ” extension indicates Android Backup . The “ -noapk ” option means that a backup of the .apk file is disabled and only the contents are backed up.
Extract from Android ADB Backup
The ADB backup can be converted to a TAR archive in two steps. First, we strip the 24-byte header. Once stripped of the header, we will have to decompress the raw zlib data using openssl .
Another way is to use the tail command instead of the dd command to strip the headers.
You will now be able to extract the file using the tar command.
Restore / Repack Android ADB Backup
To restore the original Android Backup archive, run adb like this:
But if you have made changes to the contents of the files stored in the tar acrhive, you will need to recreate the ADB Backup archive. To do this, we will have to compress the tar archive and append the 24-byte header found on the original Android Backup file.
We will also need the original Android Backup file “ com.whatsapp.ab ” to extract the header information. If you do not have the file, just perform an ADB backup on a package to create the backup file. All Android backup files have the same header so the header can be extracted from any Android Backup file.
Alternative way is to use the head command instead of the dd command.
Источник
Как сделать 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 разделы.
Источник