Faça backup e restaure as configurações e aplicativos do Android por meio do ADB

30

Gostaria de perguntar se é possível fazer backup e restaurar todas as configurações e aplicativos do Android por meio do ADB.

Eu tentei:

adb backup -all
adb: unable to connect for backup

Não está funcionando, enquanto todos os outros comandos estão funcionando.

É possível usar este bmgr ?

glarkou
fonte
Estou usando o adb 1.0.29 no win7-64 e recebo o erro adb: unable to open file ./backup.abao executar adb backup -all. não adb devicesencontrar o seu android?
k3b
sim, posso ver o ID do dispositivo.
Eu tive um problema semelhante ao enviar nomes de pacotes multipe na linha de comando. O problema era (é) que o número de pacotes para backup é muito longo. Eu precisava dividi-lo em várias chamadas de comando
Romuald Brunet

Respostas:

9

Verifique se a depuração está ativada e o dispositivo está conectado. Além disso, lembre-se de selecionar o botão "fazer backup dos meus dados" no próprio dispositivo (o dispositivo requer confirmação). Se você não vê essa tela no seu dispositivo, provavelmente está executando um telefone pré-ICS (<4.0), que infelizmente não terá esse recurso.

Além disso, bmgrnão é uma solução para isso - é uma ferramenta para testar aplicativos que lidam com seus próprios backups usando o API de backup disparando manualmente os métodos "backup" e "restore" no agente de backup no aplicativo, sem bombardear o dispositivo e copiar dados de / para a máquina de desenvolvimento.


fonte
Sim - para mim o problema era a versão antiga do Android no meu telefone, anterior à 4.0. Obrigado!
Nellmcb
Isso realmente inclui configurações / dados?
Ninguém
7

Aqui está o meu comando para fazer backup de coisas

./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. listar todos os arquivos
  2. ignorar links
  3. para
    • files: gera um comando adb pull
    • diretórios: faça o dir (caso puxemos sth vazio) e produza um comando adb pull
  4. executar tudo no bash

Existem alguns arquivos nos quais eu recebo uma permissão negada - mas como esse backup é feito para fazer o root do dispositivo, não consigo mais permissões :(

desam1000
fonte
11
De fato, isso parece fazer backup de todos os arquivos (menos os bits de "permissão negada"), mesmo em Androids mais antigos (neste caso, Gingerbread 2.3.3). Eu uso esta variante (adicionado -pparâmetro para mkdirevitar algumas mensagens de erro e removidas ./na frente de ./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
Uma maneira muito mais simples de fazer um backup recursivo de todos os arquivos, sem a necessidade de qualquer regex sofisticado, é "adb pull /."
JC Hulce
5

Se eu entendi corretamente, esse link pode ser o que você está procurando. Para resumir:

1) Execute adb devicespara garantir que seu dispositivo esteja conectado.

2) Corra adb pull /data/app ./para pegar todos os APKs do aplicativo e colocá-los na pasta atual.
a) Ou Corra adb pull /system/sd/app ./para obter aplicativos no cartão SD.

3) As configurações estão localizadas em vários lugares; portanto, descubra onde e use o mesmoadb pull comando para pegá-las.

E o link detalha como restaurar com base em Mac ou Windows.

Como alternativa, parece que o bmgrcomando que você mencionou também funcionaria com alguns comandos simples ( adb shell bmgr backup <package>para fazer backup e adb shell bmgr restore <package>restaurar). O que mais você está procurando?


fonte
11
Como Alexander Lucas observa em sua resposta abaixo, o bmgrcomando é uma ferramenta para os desenvolvedores testarem o backup / restauração de aplicativos. Na verdade, ele não copia nenhum dado do dispositivo, portanto, é improvável que seja útil.
PT
Não funciona no adb 1.0.30 com dispositivo Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon
Você adb pullnão funcionará em dispositivos não-rooteados para dados de aplicativos particulares. E bmgré apenas para googles controladores nuvem de backup
Murmel
2

O problema provavelmente se deve a mais de um dispositivo / emulador conectado.

verifique adb devicesse mostra mais de um dispositivo e talvez não consiga se conectar specialy to emulators.

executá- adb usblo, reiniciará outros dispositivos, desconectará / reconectará o cabo usb, agora execute

adb devices

deve mostrar apenas um dispositivo.

agora faça

adb backup -all

e você deve estar pronto para ir :)

Zalaboza
fonte
o que eu teria que fazer se eu usasse o comando localmente através de um emulador de terminal para android?
user2284570
2

Certifique-se de executar a atualização do SDK e marque especificamente a caixa de drivers USB do Google e atualize o SDK.

Após ativar a depuração USB no dispositivo e conectar ao PC, você deverá receber uma solicitação sobre a instalação de drivers. Mesmo que seu gerenciador de dispositivos aberto seja bem-sucedido e encontre seu telefone, clique com o botão direito do mouse e atualize os drivers e aponte-o para a pasta do driver USB do Google naSDK > Extras > Google USB e deixe-o atualizar os drivers.

Então você deve conseguir fazer backups completos do seu dispositivo.

Tyson
fonte
Isso corrigiu o problema para mim quando eu estava tendo. Os drivers não eram o problema, mas a versão do ADB estava desatualizada.
AJ Henderson
1

Eu tenho um GS4 que eu precisava fazer backup e infelizmente encontrei esse erro. depois de um pouco de coçar a cabeça (e xingar), encontrei uma correção que espero que funcione para você. Consegui encontrar isso apenas executando abde percorrendo a documentação de ajuda. Eu descobri que -dé um parâmetro que "direciona o comando para o único dispositivo USB conectado". Então, depois de conectar e conectar, consegui que funcionasse para mim. O comando que eu usei foi:

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

Espero que isso funcione para alguém com o mesmo problema que eu tive.

WAZANATOR
fonte
0

Eu tive o mesmo problema e também sou pré-ICS. O que eu fiz para contornar isso foi usado ls of /e awk (com grep para pular links) para criar um arquivo em lotes que puxa cada diretório real para um diretório no meu PC.

eldarerathis
fonte