Android – Backup & Restore mit ADB

Ich hatte das Problem, das bei meinem Nexus 7 irgendwie das Display kaputt gegangen ist – es ging nicht mehr an ☹ Aber zum Glück kam ich noch über adb auf das Gerät. Und da Android ja auch „nur“ ein Linux ist, konnte ich so auch ein Backup und (auf einem neuen Nexus 7) Restore machen. OHNE etwas am kaputten Gerät selber eingeben zu müssen🙂 Und das ging so…

Partitionen-per-ADB-restoren

Backup

Zuerst habe ich einen TCP Port per ADB vom lokalen Rechner zum Tablett weitergeleitet:


adb forward tcp:5559 tcp:5559

Wenn also was an localhost:5559 vom PC geschickt wird, so kann das Tablett das auch über localhost:5559 lesen. Das muss gemacht werden, da man leider NICHT einfach mit „adb shell $BEFEHL“ Daten vom Gerät zum PC „pipen“ kann – da kommen dann DOS Zeilenenden hinzu, was manche Daten halt zerstört.😦

Nun also nach dem „adb forward …“ auf die Shell einloggen – am besten in den Recovery Mode booten (ich hatte dazu TWRP als Recovery Manager installiert gehabt — andere mögen womöglich auch funktionieren…).


adb reboot recovery
adb forward tcp:5559 tcp:5559
adb shell

Nun bin ich auf einer Shell auf dem Tablett und hatte auch root-Rechte. Das ist wichtig!

Im Anschluss daran dann mit nc (Netcat) von der Busybox das richtige Block Device (Partition) auslesen und an eben den oben bei „adb forward“ definierten Port senden.

Gesamte „Platte“:


/sbin/busybox nc -l -p 5559 -e /sbin/busybox dd if=/dev/block/mmcblk0

Oder einzelne Partitionen:


# /system:
/sbin/busybox nc -l -p 5559 -e /sbin/busybox dd if=/dev/block/mmcblk0p22

# /cache:
/sbin/busybox nc -l -p 5559 -e /sbin/busybox dd if=/dev/block/mmcblk0p23

# /data & /sdcard:
/sbin/busybox nc -l -p 5559 -e /sbin/busybox dd if=/dev/block/mmcblk0p30

Jetzt kann über das „lokale Netzwerk“ auf dem PC die Partition empfangen werden. Somit in einem anderen Terminalfenster ausführen:


nc 127.0.0.1 5559 | pv -i 0.5 > /data/backup/mmcblk0.full.raw

„pv“ ist nicht zwingend, aber nett, um einen Fortschrittsbalken zu haben. Und den Pfad „/data/backup/mmcblk0.full.raw“ passe man natürlich so an, das es passt.

So konnte ich von der gesamten Platte und auch den einzelnen Partitionen eine Sicherung erzeugen – ging aber nicht sonderlich schnell… Nur ca. 3MB/s. Besser als nix😉

Restore

Was gesichert wurde, will natürlich auch wieder eingespielt werden🙂

Zuerst wieder einen Port weiterleiten und in der adb shell (im Recovery Mode) einloggen (auf dem neuen Gerät…):


adb forward tcp:6556 tcp:6556
adb shell
/sbin/busybox nc -l -p 6556 -e /sbin/busybox dd of=/dev/block/mmcblk0p30

Hier habe ich nur eine Partition wieder einspielen wollen. Um die Daten zu senden, in einem anderen Terminalfenster die passende Datei senden.


time pv -pterabi 0.5 /data/backup/mmcblk0p30.data+sdcard.raw | nc -v 127.0.0.1 6556

Und nach nur wenigen Stunden (wegen der Dauer des Datentransfers) ist alles wieder gut🙂

YEAH🙂

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s