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

Mein Telefon hat nicht genug Speicherplatz, um Sicherungsdateien zu speichern, daher frage ich mich, ob es eine Möglichkeit gibt, Nandroid-Sicherung und Wiederherstellung mit auf dem PC gespeicherten Dateien durchzuführen.

Ich bezweifle, dass es dafür eine Möglichkeit gibt. Sie sollten versuchen, auf einer externen SD-Karte zu sichern und dann auf den Computer zu übertragen. Oder verschieben Sie einfach genügend Dateien auf Ihren Computer, damit Sie die Sicherung auf Ihrem Telefon erstellen und wiederherstellen können, und verschieben Sie die Dateien dann wieder zurück, wenn Sie fertig sind.

Antworten (4)

Ich habe aufgrund ähnlicher Frustrationen 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-Partitions-Images von dd if=/dev/block/mmcblk0pXX) oder TWRP-Style-Backups (Mischung aus Raw-Partitions-Images und Tarballs für ext4Partitionen) zu erstellen.

Sie versuchen, das richtige Partitionslayout zu prüfen, und zeigen den Fortschritt des Backups an:

$ ./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 noch in Arbeit – Feedback ist sehr willkommen!

Anforderungen:

  • Python 3.3+ unter Linux/OSX/Windows.
    • progressbarPaket wird benötigt ( pip install progressbarsollte es tun)
  • adb(Android Debug Bridge) Befehlszeilentools
  • Gerootetes Android-Gerät mit installierter TWRP-Wiederherstellung .
    • Die Anforderung für ein gerootetes Gerät und eine benutzerdefinierte Wiederherstellung wird nie verschwinden : Wenn Sie keinen Root-Zugriff haben, haben Sie keine Möglichkeit, den gesamten Inhalt des Speichers Ihres Geräts zu kopieren, so einfach ist das.

BEARBEITEN: Sieht so aus, als ob der meiste Datenverkehr zu https://github.com/dlenski/tetherback von diesem Thread stammt. Die in den Kommentaren unten beschriebenen frühen Probleme mit Datenkorruption wurden alle behoben; tetherback enthält jetzt sehr strenge Kontrollen gegen Korruption.

Erstmal danke für die Erstellung des Programms. 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 fehl, wenn das gzip dekomprimiert wird. Das "crc schlägt fehl" und erzeugt eine img-Datei, die etwa 1/5 der Größe der img.gz-Datei beträgt. Bootloader.img.gz wird jedoch problemlos dekomprimiert. Können Sie das gzipping trotzdem deaktivieren oder kennen Sie eine andere Möglichkeit, die beschädigte Datei zu reparieren?
@I'm_With_Stupid, Sie können das deaktivieren, gzipindem Sie L46 ändern , aber ich bezweifle, dass dies tatsächlich das Problem ist. Nutzt du Linux oder Windows? Leider verstümmelt adb unter Windows CRLF-Zeichen , was bedeutet, dass es unmöglich ist, ein binäres Bild mit der von mir verwendeten Technik zu übertragen. Notfalls kann ich dafür einen Workaround schreiben.
Wenn Sie weitere Details angeben können, fügen Sie es bitte als neues Problem im Github-Repository hinzu, da es so einfacher ist, den Überblick zu behalten!
Ich habe meine Probleme als neue Probleme hinzugefügt, also sollten wir unsere Unterhaltung dort wahrscheinlich fortsetzen .

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

Der Artikel beschreibt Schritt für Schritt die Befehle, die zum Erstellen eines Nandroid-Backups benötigt werden. Grundsätzlich wird dd über eine Named Pipe verwendet , um eine Kopie der Partitionen Ihres Geräts auf Blockebene zu erstellen – was im Grunde ein ist.

Danke für den Hinweis, @Hudayfah! Aber während Nur-Link-Beiträge die Frage theoretisch beantworten können, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Andernfalls wird die Antwort nutzlos, falls der Link stirbt. Ich habe deinen Post entsprechend aktualisiert, um zu zeigen, wie das aussehen kann, um dir bei zukünftigen Posts zu helfen (die du hoffentlich machen wirst :) Ein herzliches Willkommen in unserer Community inklusive!
Wie würden Sie auch vorgehen, um dieses Backup wiederherzustellen, vorausgesetzt, Sie haben nur Zugriff auf Fastboot oder vielleicht ADB in der Wiederherstellung?
warum muss es gerootet sein?

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

adb pull /dev/block/mmcblk0

Dies ist dasselbe wie im XDA-Thread beschrieben, um den Bit-für-Bit-Inhalt des Flash-Speichers abzurufen, außer ohne den Tanz mit netcat und Pipes (der je nach den Umständen erforderlich sein könnte oder nicht, denke ich). Offensichtlich sollte keine Partition auf dem Flash-Speicher gemountet werden, während die Daten kopiert werden (dh tun Sie es von einer Wiederherstellung, während adb mountkeine gemounteten Partitionen aufgelistet sind), sonst riskieren Sie ein inkonsistentes Backup an Stellen, an denen Android Daten schreiben wollte Zeitpunkt der Sicherung.

Beachten Sie, dass für die Wiederherstellung ein einfaches:

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

funktioniert nicht, da adb shellRohrleitungen nicht unterstützt werden. Aber wenn Sie irgendwie dd of=/dev/block/mmcblk0auf dem Gerät selbst etwas tun können, sollte es Ihre Sicherung wiederherstellen. Vertrauen Sie mir aber nicht, es könnte genauso gut Ihr Telefon mauern. Ich habe es noch nicht getestet; Bisher musste ich nur eine einzelne Partition wiederherstellen und dddas war in Ordnung.

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

    ./adb reboot recovery

  4. den Zug machen

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

Wie würde ich eine solche Sicherung wiederherstellen?
@Suma mit adb push (oder mounten Sie das img und kopieren Sie die interessierenden Dateien)
Mit Android können Sie so einfach auf den gesamten internen Speicher zugreifen?
@Suma Ich habe das Internet durchsucht und es gibt unzählige Anleitungen zum Abrufen der rohen mmcblk0-Partitionsdaten, aber nur vage Antworten oder Vermutungen, wie die Daten wiederhergestellt werden können. Nach meinem bisherigen Verständnis ist das Wiederherstellen der vollständigen Gerätesicherung von mmcklk0 nicht möglich. Sie würden ein Dienstprogramm verwenden, um jede darin enthaltene Partition zu identifizieren und jede dieser Partitionen separat wiederherzustellen. Möglicherweise benötigen Sie Dienstprogramme wie simg2img, um das richtige Format der Daten zu erhalten. Raw, Sparse, Image usw. Ich untersuche das immer noch, das ist also alles, was ich jetzt habe.
@KingHolly "adb root" lässt Sie wiederherstellen. keine Notwendigkeit, es zu kompliziert zu machen, indem Sie etwas anderes als ein Rohbild verwenden.