Existe-t-il un moyen de faire la sauvegarde Nandroid directement sur le PC, puis de la restaurer directement à partir du PC également?

22

Mon téléphone n'a pas assez d'espace pour stocker des fichiers de sauvegarde, je me demande donc s'il existe un moyen de faire une sauvegarde et une restauration Nandroid avec des fichiers stockés sur PC.

JatSing
la source
1
Je doute qu'il existe un moyen de le faire. Vous devriez essayer de sauvegarder sur une carte SD externe, puis de transférer sur l'ordinateur. Ou déplacez simplement suffisamment de fichiers sur votre ordinateur pour pouvoir créer et restaurer la sauvegarde sur votre téléphone, puis reculer les fichiers lorsque vous avez terminé.
VarnerBeast14

Réponses:

14

J'ai écrit quelques outils exactement à cette fin, en raison de frustrations similaires: https://github.com/dlenski/tetherback

Ces outils sont écrits en Python et adbpermettent de créer des sauvegardes de style nandroid (images de partitions brutes de dd if=/dev/block/mmcblk0pXX) ou des sauvegardes de style TWRP (mélange d'images de partitions brutes et de tarballs pour les ext4partitions).

Ils tentent de sonder la disposition correcte de la partition et montrent la progression de la sauvegarde:

$ ./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  

Il s'agit d'un travail en cours - les commentaires sont les bienvenus!

Exigences:

  • Python 3.3+ sous Linux / OSX / Windows.
    • progressbarle paquet est nécessaire ( pip install progressbardevrait le faire)
  • adb (Android Debug Bridge) outils de ligne de commande
  • Appareil Android enraciné avec récupération TWRP installée.
    • L'exigence d'un appareil rooté et d'une récupération personnalisée ne disparaîtra jamais : si vous n'avez pas accès root, vous n'avez aucun moyen de copier tout le contenu de la mémoire de votre appareil, aussi simple que cela.

EDIT: On dirait que la plupart du trafic vers https://github.com/dlenski/tetherback provient de ce fil. Les premiers problèmes de corruption de données décrits dans les commentaires ci-dessous ont tous été résolus; tetherback comprend désormais des contrôles très solides contre la corruption.

Dan
la source
Tout d'abord merci d'avoir fait le programme. Il semble bien fonctionner sauf lorsque j'utilise nandroid.py, les fichiers plus gros, tels que system.img.gz et userdata.img.gz, échouent lors de la décompression du gzip. Le "crc échoue" et il produit un fichier img d'environ 1 / 5ème de la taille du fichier img.gz. Cependant, le bootloader.img.gz se décompresse correctement. Est-ce que de toute façon vous pouvez désactiver le gzipping ou connaissez-vous une autre façon de réparer le fichier corrompu?
I'm_With_Stupid
1
@ I'm_With_Stupid, vous pouvez désactiver le gzipen modifiant L46 , mais je doute que ce soit réellement le problème. Utilisez-vous Linux ou Windows? Malheureusement, sous Windows adb modifie les caractères CRLF , ce qui signifie qu'il est impossible de transmettre une image binaire à travers elle en utilisant la technique que j'utilise. Je peux écrire une solution de contournement pour cela si besoin est.
Dan
De plus, si vous pouvez fournir plus de détails, veuillez l'ajouter en tant que nouveau numéro sur le référentiel Github, car cela facilite le suivi!
Dan
1
J'ai ajouté mes problèmes en tant que nouveaux problèmes, nous devrions donc probablement continuer notre conversation là-bas .
I'm_With_Stupid
8

Un fil sur les développeurs XDA décrit comment effectuer une sauvegarde nandroid directement sur votre ordinateur sans utiliser de carte SD . Bien sûr, cela ne fonctionne que sur les appareils rootés. Les autres exigences incluent soit un OS Posix comme Linux / MacOS (les utilisateurs Windows peuvent émuler cela avec Cygwin), et ADB (donc soit le SDK entier, soit au moins une installation minimale ). De plus, busyboxdoit être disponible sur l'appareil et le débogage USB doit être activé.

L'article décrit étape par étape les commandes nécessaires pour créer une sauvegarde Nandroid. Fondamentalement, il utilise dd via un canal nommé pour créer une copie de niveau bloc des partitions de votre appareil - ce essentiellement une .

Izzy
la source
2
Merci pour le pointeur, @Hudayfah! Mais alors que les articles contenant uniquement des liens peuvent théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. Sinon, la réponse devient inutile au cas où le lien mourrait. J'ai mis à jour votre message en conséquence pour montrer à quoi cela peut ressembler, pour vous aider concernant les futurs messages (que vous espérons faire :) Un accueil chaleureux dans notre communauté inclus!
Izzy
De plus, comment procéderiez-vous pour restaurer cette sauvegarde, en supposant que vous n'ayez accès qu'à fastboot ou peut-être à adb en cours de récupération?
jiggunjer
pourquoi doit-il être enraciné?
user4951
2

J'ai remarqué que (si vous avez déjà configuré ADB, votre téléphone est enraciné et que vous travaillez sur un système Linux ou similaire), il est possible de vider le contenu de la partition par une seule ligne:

adb pull /dev/block/mmcblk0

C'est la même chose que ce qui est décrit dans le thread XDA pour obtenir le contenu bit à bit de la mémoire flash, sauf sans la danse avec netcat et les tuyaux (qui pourraient être nécessaires ou non selon les circonstances, je suppose). De toute évidence, aucune partition sur la mémoire flash ne doit être montée lors de la copie des données (c'est-à-dire le faire à partir d'une récupération adb mountsans répertorier les partitions montées), sinon vous risquez une sauvegarde incohérente dans les endroits où Android a décidé d'écrire des données sur le moment de la sauvegarde.

Notez que pour restaurer un simple:

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

ne fonctionnera pas, car adb shellne prend pas en charge la tuyauterie. Mais si vous pouvez en quelque sorte faire dd of=/dev/block/mmcblk0sur l'appareil lui-même, je suppose qu'il devrait restaurer votre sauvegarde. Mais ne me faites pas confiance à ce sujet, cela pourrait aussi bien clouer votre téléphone. Je ne l'ai pas encore testé; Jusqu'à présent, je n'avais besoin que de récupérer une seule partition et cela me convenait dd.

liori
la source
2
  1. Afficher les options du développeur ( Settings > Developer> tap build 7 times)
  2. Activer le débogage USB ( Settings > Developer > USB Debugging)
  3. utiliser la récupération pour éviter les limitations de la racine du système d'exploitation

    ./adb reboot recovery

  4. faire le pull

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

user1133275
la source
Comment restaurer une telle sauvegarde?
Suma
@Suma avec adb push (ou montez l'img et copiez les fichiers qui vous intéressent)
user1133275
Android vous permettra d'accéder à l'intégralité du stockage interne aussi facilement?
Melab