Realice una copia de seguridad y restaure la configuración y la aplicación de Android a través de ADB

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 funcionan.

¿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. ¿ adb devicesEncuentra tu Android?
Sí, puedo ver la identificación del dispositivo.
Tuve un problema similar al enviar varios nombres de paquetes en la línea de comandos. El problema era (es) que la cantidad de paquetes para respaldar es demasiado larga. Necesitaba dividirlo en múltiples llamadas de comando

Respuestas (7)

Asegúrese de que la depuración esté habilitada y que el dispositivo esté conectado. Además, recuerda seleccionar el botón "hacer una copia de seguridad de mis datos" en el propio dispositivo (el dispositivo requiere confirmación). Si no ve esa pantalla en su dispositivo, es muy posible que tenga un teléfono anterior a 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, sin bombardear el dispositivo y copiar datos hacia/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!
¿Esto realmente incluye configuraciones/datos?

Aquí está mi comando para hacer una copia de seguridad de 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. por
    • archivos: genera un comando adb pull
    • directorios: haga el directorio (en caso de que extraigamos algo vacío) y emita un comando adb pull
  4. ejecutar todo en bash

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

De hecho, esto parece respaldar todos los archivos (menos los bits de "permiso denegado") incluso en Android más antiguos (en este caso, Gingerbread 2.3.3). Utilizo esta variante (se agregó un -pparámetro para mkdirevitar algunos mensajes de error y se eliminó ./delante 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
Una forma mucho más sencilla de hacer una copia de seguridad recursiva de todos los archivos, sin necesidad de ninguna expresión regular elegante, es "adb pull /".

Si te entiendo bien, 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 obtener todos los APK de la aplicación y colocarlos 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 averigüe dónde y luego use el mismo adb pullcomando para agarrarlas.

Y luego el enlace detalla cómo restaurar basado en 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?

Como señala Alexander Lucas en su respuesta a continuación, el bmgrcomando es una herramienta para que los desarrolladores prueben la copia de seguridad/restauración de la aplicación. En realidad, no copia ningún dato del dispositivo, por lo que es poco probable que sea útil.
No funciona en adb 1.0.30 con dispositivo Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
No adb pullfuncionará en dispositivos no rooteados para datos de aplicaciones privadas. Y bmgres solo para controlar la copia de seguridad en la nube de Google

el problema probablemente se deba a 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 desconecte / reconecte el cable usb, ahora ejecute

adb devices

debe mostrar sólo 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?

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

Después de habilitar la depuración USB en su dispositivo y conectarlo a su PC, debería recibir un aviso sobre la instalación de controladores. Incluso si tiene éxito, abra el administrador de dispositivos y encuentre su teléfono, haga clic con el botón derecho y actualice los controladores, apúntelo a la carpeta del controlador USB de Google 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 estaba teniendo. Los controladores no eran el problema, pero la versión de ADB en sí estaba demasiado desactualizada.

Tengo un GS4 del que necesitaba hacer una copia de seguridad y desafortunadamente me encontré con este error. Después de rascarme un poco la cabeza (y maldecir), encontré una solución que espero funcione para ti. 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 tenga el mismo problema que yo tuve.

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