Gibt es eine Möglichkeit, ein Nandroid-Backup direkt auf dem PC zu erstellen und es dann auch direkt vom PC wiederherzustellen?

22

Mein Telefon verfügt nicht über genügend Speicherplatz zum Speichern von Sicherungsdateien. Daher frage ich mich, ob es eine Möglichkeit zum Sichern und Wiederherstellen von Nandroid mit auf dem PC gespeicherten Dateien gibt.

Jatsing
quelle
1
Ich bezweifle, dass es dafür einen Weg gibt. Sie sollten versuchen, auf eine externe SD-Karte zu sichern und dann auf den Computer zu übertragen. Oder verschieben Sie einfach genügend Dateien auf Ihren Computer, damit Sie die Sicherungskopie auf Ihrem Telefon erstellen und wiederherstellen können. Verschieben Sie anschließend die Dateien zurück.
VarnerBeast14

Antworten:

14

Aus ähnlichen Gründen habe ich einige Tools für genau diesen Zweck geschrieben : https://github.com/dlenski/tetherback

Diese Tools sind in Python geschrieben und werden verwendet adb, um Backups im Nandroid-Stil (Raw-Partitionsimages von dd if=/dev/block/mmcblk0pXX) oder Backups im TWRP-Stil (Mischung aus Raw-Partitionsimages und Tarballs für ext4Partitionen) zu erstellen .

Sie versuchen, das korrekte Partitionslayout zu überprüfen und den Fortschritt der Sicherung anzuzeigen:

$ ./twrp_backup.py
Device reports TWRP kernel (3.4.0-bricked-hammerhead-twrp-g7b77eb4).
Reading partition map for mmcblk0 (29 partitions)...
  partition map: 100% Time: 0:00:03                                                                                                                                                                                
Saving TWRP backup images in twrp-backup-2016-03-17--18-53-12/ ...
Saving partition boot (mmcblk0p19), 22 MiB uncompressed...
  boot.emmc.win: 100% Time: 0:00:05   3.10 MB/s                                                                                                                                                                    
Saving tarball of mmcblk0p25 (mounted at /system), 1024 MiB uncompressed...
  system.ext4.win:   2% ETA:  0:06:29   2.69 MB/s  

Dies ist eine laufende Arbeit - Feedback ist sehr willkommen!

Bedarf:

  • Python 3.3+ unter Linux / OSX / Windows.
    • progressbarPaket wird benötigt ( pip install progressbarsollte es tun)
  • adb (Android Debug Bridge) Befehlszeilentools
  • Verwurzeltes Android-Gerät mit installierter TWRP-Wiederherstellung .
    • Die Anforderungen an ein gerootetes Gerät und eine benutzerdefinierte Wiederherstellung werden nie aufhören : Wenn Sie keinen Root-Zugriff haben, haben Sie keine Möglichkeit, den gesamten Speicherinhalt Ihres Geräts zu kopieren.

BEARBEITEN: Der größte Teil des Traffics für https://github.com/dlenski/tetherback stammt aus diesem Thread. Die in den Kommentaren unten beschriebenen frühen Probleme mit der Beschädigung von Daten wurden behoben. Tetherback beinhaltet jetzt sehr strenge Kontrollen gegen Korruption.

Dan
quelle
Zunächst einmal vielen Dank, dass Sie das Programm erstellt haben. Es scheint gut zu funktionieren, außer wenn ich nandroid.py verwende, schlagen die größeren Dateien, wie system.img.gz und userdata.img.gz, beim Dekomprimieren des gzip fehl. Der "crc failed" erzeugt eine IMG-Datei, die ungefähr 1/5 der Größe der IMG.GZ-Datei entspricht. Die Datei bootloader.img.gz wird jedoch problemlos dekomprimiert. Könnten Sie trotzdem das Gzippen deaktivieren oder kennen Sie eine andere Möglichkeit, die beschädigte Datei zu reparieren?
I'm_With_Stupid
1
@ I'm_With_Stupid, du kannst das deaktivieren, gzipindem du L46 änderst, aber ich bezweifle, dass dies tatsächlich das Problem ist. Laufen Sie unter Linux oder Windows? Leider werden unter Windows ADB CRLF-Zeichen entstellt , was bedeutet, dass es unmöglich ist, ein Binärbild mit der von mir verwendeten Technik zu übertragen. Ich kann bei Bedarf eine Problemumgehung dafür schreiben.
Dan
Wenn Sie weitere Details angeben können, fügen Sie diese bitte als neues Problem im Github-Repository hinzu, da Sie so leichter den Überblick behalten können!
Dan
1
Ich habe meine Probleme als neue Probleme hinzugefügt, daher sollten wir unser Gespräch dort wahrscheinlich fortsetzen .
I'm_With_Stupid
8

Ein Thread über XDA-Entwickler beschreibt, wie Sie ein Nandroid-Backup direkt auf Ihrem Computer erstellen können, ohne die SD-Karte zu verwenden . Natürlich funktioniert es nur auf gerooteten Geräten. Weitere Voraussetzungen sind entweder ein Posix-Betriebssystem wie Linux / MacOS (Windows-Benutzer können dies mit Cygwin emulieren) oder ADB (also entweder das gesamte SDK oder zumindest eine Minimalinstallation ). Außerdem busyboxmuss auf dem Gerät das USB-Debugging aktiviert und verfügbar sein .

Der Artikel beschreibt Schritt für Schritt die Befehle, die zum Erstellen einer Nandroid-Sicherung erforderlich sind. Grundsätzlich wird dd über eine Pipe verwendet , um eine Kopie der Partitionen Ihres Geräts auf zu erstellen - was im Grunde ein ist.

Izzy
quelle
2
Danke für den Hinweis, @Hudayfah! Während jedoch Posts, die nur über Links zugänglich sind, die Frage theoretisch beantworten können, ist es vorzuziehen , die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz bereitzustellen. Andernfalls wird die Antwort unbrauchbar, falls die Verbindung unterbrochen wird. Ich habe deinen Beitrag entsprechend aktualisiert, um zu zeigen, wie das aussehen kann, um dir bei zukünftigen Beiträgen zu helfen (die du hoffentlich machen wirst :) Herzlich willkommen in unserer Community!
Izzy
Wie würden Sie dieses Backup wiederherstellen, vorausgesetzt, Sie haben nur Zugriff auf Fastboot oder AdB in Recovery?
Jiggunjer
warum muss es verwurzelt sein?
user4951
2

Mir ist aufgefallen, dass (wenn Sie ADB bereits konfiguriert haben, Ihr Telefon gerootet ist und Sie auf einem Linux-System oder ähnlichem arbeiten) es möglich ist, den Partitionsinhalt durch einen einzelnen Einzeiler zu sichern:

adb pull /dev/block/mmcblk0

Dies ist das Gleiche wie im XDA-Thread zum Abrufen der bitweisen Inhalte des Flash-Speichers beschrieben, mit Ausnahme des Tanzes mit Netcat und Pipes (der unter Umständen möglicherweise benötigt wird oder nicht). Offensichtlich sollte keine Partition auf dem Flash-Speicher gemountet werden, während die Daten kopiert werden (dh nach einer Wiederherstellung, während adb mountkeine gemounteten Partitionen aufgelistet werden), da Sie sonst ein inkonsistentes Backup an Orten riskieren, an denen Android Daten schreiben möchte Zeitpunkt der Sicherung.

Beachten Sie, dass für die Wiederherstellung eines einfachen:

pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0

funktioniert nicht, da adb shellkeine Rohrleitungen unterstützt werden. Aber wenn Sie irgendwie etwas dd of=/dev/block/mmcblk0auf dem Gerät selbst machen können, sollte es vermutlich Ihr Backup wiederherstellen. Vertraue mir aber nicht, es könnte genauso gut dein Telefon schmücken. Ich habe es noch nicht getestet. Bisher musste ich nur eine einzige Partition wiederherstellen und das ddwar in Ordnung.

Liori
quelle
2
  1. Entwickleroptionen anzeigen ( Settings > Developer> tap build 7 times)
  2. USB-Debugging aktivieren ( Settings > Developer > USB Debugging)
  3. Verwenden Sie die Wiederherstellung, um Einschränkungen des Betriebssystemstamms zu vermeiden

    ./adb reboot recovery

  4. Mach den Zug

    ./adb pull /dev/block/mmcblk0 mmcblk0.img

user1133275
quelle
Wie würde ich ein solches Backup wiederherstellen?
Suma
@Suma mit ADB Push (oder mounten Sie das IMG und kopieren Sie die Dateien von Interesse aus)
user1133275
Mit Android können Sie so einfach auf den gesamten internen Speicher zugreifen?
Melab