Як зробити 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 32 768 mmcblk0p2
 179 13 32 768 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 , щоб переглянути інформацію про всіх розділах.
 
Вся пам'ять телефону — & gt; / Dev / block / mmcblk0 (хоча, на деяких телефонах, це може бути і sdcard).
Розділи — & gt; все залежить від конкретного пристрою. Зазвичай в / 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 & gt; mmcblk0.raw
 
Ви побачите, як почне збільшуватися розмір файлу до тих пір, поки повністю не скопіюється весь вибраний вами Блок. Тепер у вас є повний бекап апарату в raw форматі. Ви можете побачити весь вміст в скопійованому Блоці за допомогою gptfdisk, доступного для Windows, Linux та інших ОС (офіційний сайт або SourceForge ). Аналогічне ви зможете зробити за допомогою ClockworkMod Recovery, але спочатку необхідно змонтувати Розділ / system, так як в BusyBox, що входить до ClockworkMod, відсутня netcat, тому вам необхідно використовувати netcat з / system розділу Вашого пристрою.
 
За допомогою певних інструментів в Linux ви можете змінювати і витягувати необхідні Розділи з усього Блоку.
 
Ви можете використовувати ADB через WiFi, аналогічно як і Wi-Fi ADB .
 
 

Резервне копіювання всієї пам'яті (через WiFi)

Посилання на автора: Nandroid directly to computer w / o sdcard .
 
Необхідно:
 
     
  • Встановлений 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 модем: Комп'ютер & lt; — Wi-Fi — & gt; Android пристрій & lt; — 3G — & gt; Інтернет
  •  
  • USB модем:
     Комп'ютер & lt; — USB — & gt; Android пристрій & lt; — Wi-Fi — & gt; Інтернет
     Комп'ютерні & lt; — USB — & gt; Android пристрій & lt; — 3G — & gt; Інтернет
  •  
 
Процес абсолютно аналогічний передачі даних через 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 = копіюються тільки файли і папки)

В даному випадку необхідний вже змонтований розділ. (Як знайти розділи на Teclast x98 3g я описував вище.)
Щоб побачити список усіх змонтованих розділів в Cygwin Терміналі введіть:
 
adb shell mount
 
Тепер ви повинні знати, де і який розділ монтується, наприклад, 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 & quot; — & quot;) не працює на 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 & gt; system.tar
 
Отриманий tar файл ви можете переглянути за допомогою Winrar, Total Commander, PeaZip і т.д. Зверніть увагу, ви не повинні витягувати файли або редагувати їх, так як tar формат зберігає дані доступу та власника для кожного файлу, які зникають при витяганні в FAT / NTFS розділи.
 
Даний матеріал був узятий з XDA .

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.