Backup e ripristino delle impostazioni e dell'applicazione Android tramite ADB


30

Vorrei chiedere se è possibile eseguire il backup e ripristinare tutte le impostazioni e le applicazioni Android tramite ADB.

Provai:

adb backup -all
adb: unable to connect for backup

Non funziona, mentre tutti gli altri comandi funzionano.

È possibile utilizzare questo bmgr ?


sto usando adb 1.0.29 su win7-64 e ottengo l'errore adb: unable to open file ./backup.abdurante l'esecuzione adb backup -all. non adb devicestrovare il vostro Android?
k3b,

Sì, posso vedere l'ID del dispositivo.

Ho avuto un problema simile durante l'invio di nomi di pacchetti multipe sulla riga di comando. Il problema era (è) il numero di pacchetti per il backup è troppo lungo. Avevo bisogno di dividerlo in più chiamate di comando
Romuald Brunet,

Risposte:


9

Assicurarsi che il debug sia abilitato e che il dispositivo sia collegato. Inoltre, ricorda di selezionare effettivamente il pulsante "backup dei miei dati" sul dispositivo stesso (il dispositivo richiede una conferma). Se non vedi una tale schermata sul tuo dispositivo, probabilmente stai usando un telefono pre-ICS (<4.0), che purtroppo non avrà la funzione.

Inoltre, bmgrnon è una soluzione per questo: è uno strumento per testare le app che gestiscono i propri backup utilizzando l' API di backup attivando manualmente i metodi di "backup" e "ripristino" sull'agente di backup nell'applicazione, non bombardando il dispositivo e copia dei dati da / verso la macchina di sviluppo.


Sì, per me il problema era la vecchia versione di Android sul mio telefono, precedente alla 4.0. Grazie!
nealmcb,

Questo include effettivamente impostazioni / dati?
Nessuno

7

Ecco il mio comando per il backup delle cose

./adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir sav\/\1; .\/adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/.\/adb pull \/\1 sav\/\1/' | /bin/bash
  1. elenca tutti i file
  2. ignora i collegamenti
  3. per
    • file: genera un comando pull adb
    • directory: crea la directory (nel caso in cui estraiamo sth vuota) e genera un comando adb pull
  4. eseguire tutto in bash

Esistono alcuni file in cui viene negata l'autorizzazione, ma poiché questo backup viene eseguito per eseguire il root del dispositivo, non riesco a ottenere più autorizzazioni :(


1
Questo sembra effettivamente fare il backup di tutti i file (meno i bit di "permesso negato") anche sugli Androidi più vecchi (in questo caso, Gingerbread 2.3.3). Uso questa variante (aggiunto -pparametro per mkdirevitare alcuni messaggi di errore e rimosso ./davanti ./adb):time adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir -p sav\/\1; adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/adb pull \/\1 sav\/\1/' | /bin/bash
Stéphane Gourichon

3
Un modo molto più semplice per eseguire un backup ricorsivo di tutti i file, senza bisogno di regex fantasiosi è "adb pull /."
JC Hulce,

5

Se ti capisco correttamente, questo link potrebbe essere quello che stai cercando. Riassumere:

1) Eseguire adb devicesper assicurarsi che il dispositivo sia collegato.

2) Esegui adb pull /data/app ./per afferrare tutti gli APK delle app e metterli nella cartella corrente.
a) Oppure Esegui adb pull /system/sd/app ./per ottenere app sulla scheda SD.

3) Le impostazioni si trovano in vari punti, quindi scopri dove e quindi usa lo stesso adb pullcomando per afferrarle.

E poi il link spiega come ripristinare in base a Mac o Windows.

In alternativa, sembra che il bmgrcomando che hai citato funzionerebbe anche con alcuni semplici comandi ( adb shell bmgr backup <package>per il backup e il adb shell bmgr restore <package>ripristino). Cosa stai cercando di più?


1
Come osserva Alexander Lucas nella sua risposta di seguito, il bmgrcomando è uno strumento per gli sviluppatori per testare il backup / ripristino delle app. In realtà non copia alcun dato dal dispositivo, quindi è improbabile che sia utile.
PT

Non funziona su adb 1.0.30 con dispositivo Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Il vostro adb pullnon funzionerà su dispositivi non-radicata per i dati un'app privata. Ed bmgrè solo per il controllo del backup su cloud di
Google

2

il problema è probabilmente dovuto a più di un dispositivo / emulatore collegato.

controlla adb devicesse mostra più di un dispositivo, quindi potrebbe non essere in grado di connettersi specialy to emulators.

eseguirlo adb usbriavvierà altri dispositivi, quindi disconnetterà / riconnetterà il cavo USB, ora verrà eseguito

adb devices

dovrebbe mostrare solo un dispositivo.

adesso fallo

adb backup -all

e dovresti essere bravo ad andare :)


cosa dovrei fare se uso il comando localmente tramite un emulatore di terminale per Android?
user2284570

2

Assicurati di eseguire l'aggiornamento dell'SDK e seleziona la casella relativa a Driver USB di Google e aggiorna l'SDK.

Dopo aver abilitato il debug USB sul dispositivo e aver collegato il PC, dovresti ricevere una richiesta di installazione dei driver. Anche se il suo gestore dispositivi aperto ha successo e trova il tuo telefono, fai clic con il pulsante destro del mouse e aggiorna i driver e puntalo alla cartella del driver USB di Google nella SDK > Extras > Google USBe lascia che aggiorni i driver.

Quindi dovresti essere in grado di estrarre backup completi dal tuo dispositivo.


Ciò ha risolto il problema per me quando lo avevo. I driver non erano il problema, ma la stessa versione ADB era troppo obsoleta.
AJ Henderson,

1

Ho un GS4 di cui avevo bisogno per il backup e purtroppo ho riscontrato questo errore. dopo un po 'di grattarsi la testa (e imprecare) ho trovato una soluzione che spero funzionerà per te. Sono stato in grado di trovarlo semplicemente correndo abde scorrendo la documentazione di aiuto. Ho scoperto che -dè un parametro che "dirige il comando sull'unico dispositivo USB collegato". Quindi, dopo averlo collegato e bloccato, l'ho fatto funzionare per me. Il comando che ho usato era:

adb -d backup -apk -shared -all -f C:\Users\NAME\backup.ab

Spero che questo funzioni per qualcuno con lo stesso problema che ho avuto.


0

Ho avuto lo stesso problema e sono anche pre-ICS. Quello che ho fatto per aggirare il problema è stato usato a ls di /e awk (con grep per saltare i collegamenti) per creare un file batch che tira ogni directory effettiva su una directory sul mio PC.

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.