C'è un modo per eseguire il backup Nandroid direttamente sul PC e quindi ripristinarlo direttamente anche dal PC?


22

Il mio telefono non ha abbastanza spazio per archiviare i file di backup, quindi mi chiedo se esiste un modo per eseguire il backup e il ripristino di Nandroid con i file memorizzati sul PC.


1
Dubito che ci sia un modo per farlo. Dovresti provare a eseguire il backup su una scheda SD esterna e quindi a trasferire sul computer. O semplicemente sposta abbastanza file sul tuo computer in modo da poter creare e ripristinare il backup sul tuo telefono e poi spostare i file indietro quando hai finito.
VarnerBeast14

Risposte:


14

Ho scritto alcuni strumenti esattamente per questo scopo, a causa di frustrazioni simili: https://github.com/dlenski/tetherback

Questi strumenti sono scritti in Python e utilizzati adbper creare backup in stile nandroid (immagini di partizioni non elaborate da dd if=/dev/block/mmcblk0pXX) o backup in stile TWRP (combinazione di immagini di partizioni non elaborate e tarball per le ext4partizioni).

Tentano di sondare il layout di partizione corretto e mostrano l'avanzamento del backup:

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

Questo è un work in progress: il feedback è molto gradito!

Requisiti:

  • Python 3.3+ in Linux / OSX / Windows.
    • progressbarè necessario il pacchetto ( pip install progressbardovrebbe farlo)
  • adb (Android Debug Bridge) strumenti da riga di comando
  • Dispositivo Android con root con recupero TWRP installato.
    • Il requisito per un dispositivo rooted e un ripristino personalizzato non sparirà mai : se non si dispone dell'accesso root, non si ha modo di copiare l'intero contenuto della memoria del dispositivo, semplice.

EDIT: sembra che la maggior parte del traffico verso https://github.com/dlenski/tetherback provenga da questa discussione. I primi problemi con corruzione dei dati descritti nei commenti seguenti sono stati tutti risolti; tetherback ora include controlli molto forti contro la corruzione.


Prima di tutto grazie per aver realizzato il programma. Sembra funzionare bene tranne quando uso nandroid.py i file più grandi, come system.img.gz e userdata.img.gz, falliscono durante la decompressione di gzip. "Crc fail" e produce un file img di circa 1/5 della dimensione del file img.gz. Tuttavia, bootloader.img.gz si decomprime bene. È comunque possibile disabilitare il gzipping o conosci un altro modo per riparare il file danneggiato?
I'm_With_Stupid

1
@ I'm_With_Stupid, puoi disabilitare gzipmodificando L46 , ma dubito che questo sia effettivamente il problema. Stai usando Linux o Windows? Sfortunatamente, sotto Windows adb mangia i caratteri CRLF , il che significa che è impossibile trasmettere un'immagine binaria attraverso di essa usando la tecnica che sto usando. Posso scrivere una soluzione alternativa per questo, se necessario.
Dan,

Inoltre, se è possibile fornire ulteriori dettagli, si prega di aggiungerlo come Nuovo numero sul repository Github perché rende più facile tenerne traccia!
Dan

1
Ho aggiunto i miei problemi come nuovi problemi, quindi probabilmente dovremmo continuare la nostra conversazione .
I'm_With_Stupid

8

Un thread sugli sviluppatori XDA descrive come eseguire un backup nandroid direttamente sul tuo computer senza usare sdcard . Ovviamente funziona solo su dispositivi rooted. Ulteriori requisiti includono un sistema operativo Posix come Linux / MacOS (gli utenti Windows possono emularlo con Cygwin) e ADB (quindi l'intero SDK o almeno un'installazione minima ). Inoltre, busyboxdeve essere disponibile sul dispositivo e il debug USB attivato.

L'articolo descrive passo dopo passo i comandi necessari per creare un backup Nandroid. Fondamentalmente, sta usando dd tramite una pipe denominata per creare una copia a livello di blocco delle partizioni del dispositivo - che sostanzialmente un .


2
Grazie per il puntatore, @Hudayfah! Ma mentre i post solo link possono teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il link come riferimento. Altrimenti, la risposta diventa inutile nel caso in cui il collegamento muoia. Ho aggiornato di conseguenza il tuo post per mostrare come può apparire, per aiutarti in merito ai post futuri (che spero farai :) Un caloroso benvenuto alla nostra community inclusa!
Izzy

Inoltre, come farebbe per ripristinare questo backup, supponendo che tu abbia accesso solo al fastboot o magari adb nel recupero?
jiggunjer,

perché deve essere radicato?
user4951

2

Ho notato che (se hai già configurato ADB, il tuo telefono è rootato e stai lavorando su un sistema Linux o simile) è possibile scaricare il contenuto della partizione da un singolo one-liner:

adb pull /dev/block/mmcblk0

Questo è lo stesso di quello descritto nel thread XDA per ottenere i contenuti bit per bit della memoria flash, tranne senza il ballo con netcat e pipe (che potrebbe essere necessario o meno a seconda delle circostanze, immagino). Ovviamente nessuna partizione sulla memoria flash deve essere montata durante la copia dei dati (ad es. Farlo da un ripristino mentre adb mountnon elenca alcuna partizione montata), altrimenti rischierai un backup incoerente in luoghi in cui Android ha deciso di scrivere dati sul tempo di backup.

Si noti che per ripristinare un semplice:

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

non funzionerà, in quanto adb shellnon supporta le tubazioni. Ma se in qualche modo riesci a fare un dd of=/dev/block/mmcblk0dispositivo sul dispositivo stesso, suppongo che dovrebbe ripristinare il backup. Non fidarti di me, però, potrebbe anche danneggiare il tuo telefono. Non l'ho ancora provato; finora avevo solo bisogno di recuperare una singola partizione e per me ddandava bene.


2
  1. Mostra opzioni sviluppatore ( Settings > Developer> tap build 7 times)
  2. Abilita debug USB ( Settings > Developer > USB Debugging)
  3. utilizzare il recupero per evitare le limitazioni della radice del sistema operativo

    ./adb reboot recovery

  4. fai il tiro

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


Come ripristinerei tale backup?
Suma,

@Suma con adb push (o monta img e copia i file di tuo interesse)
user1133275

Android ti consentirà di accedere facilmente all'intera memoria interna?
Melab,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.