Copia de seguridad y restauración de configuraciones y aplicaciones de Android a través de ADB


30

Me gustaría preguntar si es posible hacer una copia de seguridad y restaurar todas las configuraciones y aplicaciones de Android a través de ADB.

Lo intenté:

adb backup -all
adb: unable to connect for backup

No funciona, mientras que todos los demás comandos están funcionando.

¿Es posible usar este bmgr ?


Estoy usando adb 1.0.29 en win7-64 y obtengo el error adb: unable to open file ./backup.abal ejecutar adb backup -all. no adb devicesencontrar su androide?
k3b

Sí, puedo ver la identificación del dispositivo.

Tuve un problema similar al enviar nombres de paquetes multipe en la línea de comandos. El problema era (es) que la cantidad de paquetes para respaldar es demasiado larga. Necesitaba dividirlo en varias llamadas de comando
Romuald Brunet

Respuestas:


9

Asegúrese de que la depuración esté habilitada y el dispositivo esté conectado. Además, recuerde seleccionar en realidad el botón "hacer una copia de seguridad de mis datos" en el dispositivo (el dispositivo requiere confirmación). Si no ve esa pantalla en su dispositivo, posiblemente esté ejecutando un teléfono pre-ICS (<4.0), que desafortunadamente no tendrá la función.

Además, bmgrno es una solución para esto: es una herramienta para probar aplicaciones que manejan sus propias copias de seguridad utilizando la API de copia de seguridad activando manualmente los métodos de "copia de seguridad" y "restauración" en el agente de copia de seguridad en la aplicación, no bombardeando el dispositivo y copiando datos a / desde la máquina de desarrollo.


Sí, para mí el problema era la versión anterior de Android en mi teléfono, anterior a la 4.0. ¡Gracias!
nealmcb

¿Esto realmente incluye configuraciones / datos?
Nadie

7

Aquí está mi comando para respaldar las cosas

./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. enumerar todos los archivos
  2. ignorar enlaces
  3. para
    • archivos: genera un comando de extracción de adb
    • directorios: crea el directorio (en caso de que dejemos algo vacío) y genere un comando adb pull
  4. ejecutar todo en bash

Hay algunos archivos donde obtengo un permiso denegado, pero como esta copia de seguridad se realiza para rootear el dispositivo, no puedo obtener más permisos :(


1
De hecho, esto parece respaldar todos los archivos (menos los bits de "permiso denegado") incluso en los androides más antiguos (en este caso, Gingerbread 2.3.3). Utilizo esta variante (añadido -pPARAM para mkdirevitar algunos mensajes de error y eliminado ./en 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
Una forma mucho más simple de hacer una copia de seguridad recursiva de todos los archivos, sin necesidad de expresiones regulares sofisticadas es "adb pull /".
JC Hulce

5

Si te entiendo correctamente, este enlace podría ser lo que estás buscando. Para resumir:

1) Ejecute adb devicespara asegurarse de que su dispositivo esté conectado.

2) Ejecutar adb pull /data/app ./para tomar todos los APK de la aplicación y ponerlos en la carpeta actual.
a) O Ejecutar adb pull /system/sd/app ./para obtener aplicaciones en la tarjeta SD.

3) Las configuraciones se encuentran en varios lugares, así que averigua dónde y luego usa el mismo adb pullcomando para tomarlas.

Y luego el enlace detalla cómo restaurar según Mac o Windows.

Alternativamente, parece que el bmgrcomando que mencionó también funcionaría con algunos comandos simples ( adb shell bmgr backup <package>para hacer una copia de seguridad y adb shell bmgr restore <package>restaurar). Que mas estas buscando?


1
Como Alexander Lucas señala en su respuesta a continuación, el bmgrcomando es una herramienta para que los desarrolladores prueben la copia de seguridad / restauración de aplicaciones. En realidad, no copia ningún dato del dispositivo, por lo que es poco probable que sea útil.
PT

No funciona en adb 1.0.30 con dispositivo Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Su adb pullvoluntad no funciona en dispositivos que no sean arraigados para los datos de aplicación privada. Y bmgres solo para controlar la copia de seguridad en la nube de
Google

2

El problema probablemente se deba a que hay más de un dispositivo / emulador conectado.

compruebe adb devicessi muestra más de un dispositivo, entonces es posible que no pueda conectarse specialy to emulators.

ejecutarlo adb usbreiniciará otros dispositivos, luego desconectará / volverá a conectar el cable usb, ahora ejecute

adb devices

debería mostrar solo un dispositivo.

ahora haz

adb backup -all

y deberías estar listo para ir :)


¿Qué tendría que hacer si uso el comando localmente a través de un emulador de terminal para Android?
usuario2284570

2

Asegúrese de ejecutar la actualización del SDK y marque específicamente la casilla para Controladores USB de Google y actualice el SDK.

Después de habilitar la depuración de USB en su dispositivo y conectarlo a su PC, debería recibir un mensaje sobre la instalación de controladores. Incluso si es exitoso abra el administrador de dispositivos y encuentre su teléfono, haga clic derecho y actualice los controladores y apúntelo a la carpeta del controlador USB de Google en el SDK > Extras > Google USBy deje que actualice los controladores.

Entonces debería poder extraer copias de seguridad completas de su dispositivo.


Esto solucionó el problema para mí cuando lo tenía. Los controladores no eran el problema, pero la versión ADB en sí estaba demasiado desactualizada.
AJ Henderson

1

Tengo un GS4 que necesitaba hacer una copia de seguridad y desafortunadamente me encontré con este error. Después de un poco de rascarse la cabeza (y maldecir) encontré una solución que espero que funcione para usted. Pude encontrar esto simplemente ejecutando abdy desplazándome por la documentación de ayuda. Descubrí que -des un parámetro que "dirige el comando al único dispositivo USB conectado". Entonces, después de enchufar y tragar, conseguí que funcionara para mí. El comando que usé fue:

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

Espero que esto funcione para alguien que tiene el mismo problema que tuve.


0

Tuve el mismo problema y también soy pre-ICS. Lo que hice para solucionarlo fue usar un ls de /y awk (con grep para omitir enlaces) para crear un archivo por lotes que extrae cada directorio real a un directorio en mi PC.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.