El problema:
Cada vez que ejecuto la copia de seguridad ADB, recibo un mensaje cerca de la parte inferior de la pantalla de inicio que dice Backup starting...
, seguido de un mensaje que dice Backup finished
unos segundos más tarde a pesar de que estoy usando 17 GB de memoria del dispositivo, y se crea el archivo de copia de seguridad resultante con un tamaño de 0 bytes. No recibo mensajes de error, ni comentarios que indiquen que algo está mal, y mucho menos lo que está mal. Parece funcionar, pero demasiado rápido, y el archivo de copia de seguridad está vacío.
El proceso:
Confirmo que ADB reconoce el dispositivo mediante el
adb devices
comando y recibo el siguiente resultado:List of devices attached 8e1f368a device
Emito el comando de copia de seguridad ADB (detalles a seguir).
Recibo el siguiente mensaje en el símbolo del sistema:
Now unlock your device and confirm the backup operation.
... y el siguiente mensaje en el teléfono:
No importa lo que haga aquí (detalles a seguir).
Toco el Back up my databotón (esquina inferior derecha).
El teléfono vuelve a la pantalla de inicio y me muestra el
Backup starting...
mensaje, luego elBackup finished
mensaje unos segundos después. Se crea un archivo de 0 bytes, denominado backup.ab predeterminado o lo que haya especificado con el modificador -f .
El comando de respaldo ADB (utilizado en el paso 2):
He probado múltiples combinaciones de opciones, que van desde tan simple como
adb backup -all
a cosas como
adb backup -all -apk -s 8e1f368a -f 'C:\Data Files\PDA\Backups\ADB\GalaxyS4_20140919.ab'
También intenté agregar el -nosystem
interruptor después de leer esto y esto , lo que indica que intentar incluir una copia de seguridad del sistema en un dispositivo no rooteado puede generar un archivo de 0 bytes, y que este interruptor debe usarse. No hay diferencia, el proceso aún se completa en cuestión de segundos y sigo obteniendo un archivo de 0 bytes.
El mensaje de contraseña "Copia de seguridad completa" (paso 3):
Estoy bastante seguro de que nunca antes he configurado una contraseña de respaldo. Nunca antes tuve la oportunidad de establecer esta contraseña o acceder a esta configuración de ninguna manera. Sin embargo, he intentado todo lo siguiente:
- Dejando ambas contraseñas en blanco
- Deje en blanco la "contraseña de respaldo actual" e ingrese una nueva contraseña en el segundo cuadro
- Ingresando el PIN de bloqueo de pantalla actual y todos los PIN que he usado en el pasado como la "contraseña de respaldo actual".
- Ingresando cada contraseña que se me ocurra que alguna vez hubiera usado para cualquier cosa en este dispositivo
En todos los casos, el comportamiento es exactamente el mismo que el descrito en el paso 5. No recibo ningún error ni ningún tipo de indicación de que algo esté mal o que mis contraseñas no sean válidas, y no tengo indicios de si realmente está esperando una contraseña actual o si eso El campo debe dejarse en blanco. (La captura de pantalla en esta respuesta y en varios otros foros de soporte que he visto parece implicar que el cuadro "contraseña de respaldo actual" no se mostrará si no hay una contraseña actual, pero eso es solo una inferencia; nada aclara si se requiere una contraseña actual)
Sospecho que la contraseña que solicita podría ser la "Contraseña de copia de seguridad de escritorio" establecida en las Opciones de desarrollador:
Nunca he establecido esa contraseña antes. Si trato de configurar uno, recibo un mensaje que diceFailed to set backup password.
Al buscar información sobre este error, me encontré con al menos otro caso en el que alguien que tenía este problema dijo que esto le impedía usar la copia de seguridad de ADB, pero no fue específico sobre lo que sucede cuando intenta usar ADB apoyo.
La mayoría de las personas que recibieron este mensaje que nunca antes habían establecido la contraseña dicen que la solución fue dejar la contraseña actual en blanco, pero lo intenté en primer lugar y no funcionó. Encontré una pregunta de otra persona que encontró este problema y estaba seguro de que no había establecido la contraseña antes . Desafortunadamente, parece que nunca tuvo una solución o incluso una explicación.
Independientemente de si ADB está buscando la "Contraseña de copia de seguridad de escritorio" o si la contraseña de cifrado de ADB es algo separado, me sorprende por qué ADB requeriría que ingrese una contraseña anterior para iniciar una nueva copia de seguridad. No estoy tratando de restaurar, sobrescribir o de ninguna manera acceder a datos cifrados anteriormente, por lo que incluso si se hubiera establecido previamente una contraseña de cifrado para una copia de seguridad , no puedo imaginar por qué alguien pensaría que es una buena idea evitar que usted haga una copia de seguridad de su dispositivo si no recuerda qué contraseña utilizó para cifrar las copias de seguridad en el pasado.
Información Adicional:
Modelo: Samsung Galaxy S4 SCH-I545
Versión del kernel: 3.4.0
Versión del sistema operativo: 4.4.2
Android SDK Versión de herramientas: 1.16 La
depuración de USB está habilitada.
Tenga en cuenta que mi razón para usar la copia de seguridad de ADB es hacer una copia de seguridad completa de mi teléfono para estar seguro antes de rootearlo * para poder usar herramientas de copia de seguridad de nandroid como la copia de seguridad de Titanium. Entonces, cualquier sugerencia que implique rootear mi teléfono sería un Catch-22, no una solución. No hace falta decir que un restablecimiento de fábrica tampoco es una solución, ya que anularía todo el propósito de realizar la copia de seguridad.
El teléfono está configurado para sincronizarse con los servidores de Exchange de mi empresa, y el servidor aplica algunas políticas. Pensé que el dispositivo estaba encriptado la primera vez que configuré la sincronización con la cuenta de la compañía, pero aparentemente actualmente no está encriptado. De hecho, eso es lo que puso en marcha esta cadena de eventos: recibo un mensaje que me dice que necesito encriptar el dispositivo para continuar conectándome a los servidores de la compañía. Quiero tomar una copia de seguridad de nandroid antes de encriptar, lo que requiere rootear, y quiero usar la copia de seguridad ADB antes de rootear.
* Sí, soy consciente de que se supone que Towelroot es seguro, pero prefiero no arriesgarme, y me gustaría resolver o al menos entender este problema en caso de que surjan problemas relacionados en el futuro.
fuente
adb backup
funcionaba bien,adb restore
siempre fallaba). Resultó que era un problema de permiso (el fabricante había estropeado la ROM), poradb restore
lo que no pudo leer el archivo de copia de seguridad una vez que se transfirió al dispositivo. Fue un poco difícil de encontrar, y no estoy seguro de si algo similar realmente es el caso aquí; Pero puede valer la pena comprobarlo.Respuestas:
Respuesta corta
Intente usar una versión anterior de adb. 1.0.32 no funcionó para mí, pero 1.0.31 sí.
Respuesta larga
Acabo de encontrar este problema en un Nexus 5 que ejecuta CyanogenMod 11 (basado en Android 4.4) usando la versión actual de Platform Tools y ADB (Android Debug Bridge versión 1.0.32 Revisión eac51f2bb6a8-android).
Utilizando
adb logcat
para ver los registros del dispositivo, noté que después de invocaradb backup -apk -obb -shared -all -nosystem
había algunas entradas de registro sospechosas:Donde parece que el dispositivo está interpretando las opciones de la línea de comandos como argumentos que no son opciones, y está produciendo un error porque no están instalados los nombres de paquetes. Esto me hizo sospechar que el protocolo adb o las opciones de invocación de comando / servicio habían cambiado en el dispositivo en relación con el host, así que probé una versión anterior de adb y voilà, funcionó.
Investigué un poco y encontré un cambio para usar escape_arg en "adb backup" , que ahora hace que todos los argumentos sean entrecomillados al invocar
/system/bin/bu backup
. Esto explica el comportamiento y los argumentos entre comillas simples en el mensaje de registro. Sin embargo, no parece coincidir con el momento en que encontró el error. También sugeriría que el problema está mucho más extendido de lo que parece. Así que dudo en llamar a esto la causa, pero puede ser un buen punto de partida para una mayor investigación.fuente
adb backup '-noapk -noshared -all -nosystem'
lugar deadb backup -noapk -noshared -all -nosystem
(dentro de un shell bash). Sin las comillas recibo mensajes logcat como este: 'bandera de copia de seguridad desconocida -todos: -nosistema: -noapk', 'no se suministran paquetes de copia de seguridad y no se comparten ni se dan' y finalmente 'Terminado'.Basándose en la respuesta de kevenoid, puede depender de qué versión de adb se esté ejecutando en el teléfono.
Puede averiguar qué versión está ejecutando el teléfono de forma nativa haciendo lo siguiente:
Primero averigüe qué versión está ejecutando en su escritorio
Luego abra la carcasa de su teléfono
Una vez que el shell está abierto, puede ejecutar
Luego salga del shell ejecutando
Descubrí que mi teléfono estaba ejecutando la versión 1.0.31 y no la 1.0.32 (es una nota 2 de Samsung)
Intenté usar comillas o caracteres de escape como Hunter mostró, pero ninguno de ellos funcionó desde la línea de comandos de Windows. Sin embargo, la degradación solucionó el problema de incompatibilidad entre las dos versiones.
Pude encontrar la versión anterior siguiendo las instrucciones aquí: https://stackoverflow.com/a/23022718/1741542
El enlace de descarga que utilicé fue:
http://dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip
Otras plataformas:
http://dl-ssl.google.com/android/repository/platform-tools_r20-macosx.zip
http://dl-ssl.google.com/android/repository/platform-tools_r20-linux.zip
fuente
Las otras respuestas sobre los argumentos del comando que se citan son precisas. Descubrí que si escapas de los espacios entre los argumentos, funciona.
Me gusta esto:
adb backup -apk\ -shared\ -all\ -system
fuente
Ninguna de las soluciones me funcionó aquí, y no quiero degradar mis herramientas de SDK. Esto es lo que se me ocurrió: saltar
adb backup
en la computadora e ir directamente al dispositivo a través deadb shell
.Esto llama
/system/bin/bu
y volca el archivo de copia de seguridad en STDOUT (descriptor de archivo # 1). Los parámetros son los mismosadb backup <params>
->bu 1 backup <params>
. La salida se redirige a un archivo en el dispositivo y luego se puede extraer como cualquier archivo.El único inconveniente es que no puede hacer una copia de seguridad completa si su dispositivo está más de la mitad. Esto se puede solucionar si tiene una ranura SdCard externa.
bu
puede escribir allí incluso en Android 4.4.2, porque es una aplicación del sistema./mnt/extSdCard/backup.ab
funcionó igual para mí que/sdcard
.fuente
suspiro Realmente lo siento si este es el caso, y pareces ser cuidadoso a juzgar por tus capturas de pantalla y líneas de comando, pero descubrí para mi disgusto los mismos síntomas y pensé que publicaría solo en caso de que los futuros descubridores lleguen aquí. Resulta que adb es muy exigente con los guiones simples y dobles en sus opciones. Para mí, los guiones dobles reproducen este caso exactamente: el mismo mensaje en el teléfono, el mismo archivo de 0 bytes. Guiones simples a pesar de que hay nombres largos de argumentos que funcionan como un encanto.
En caso de que sea importante, mi teléfono es un Samsung Galazy Note 2 AT&T SGH-i317 con Android 5.1 / Cyanogenmod 12.1.
fuente
Debe ejecutar el comando adb backup en la versión adb 1.0.31.
Para windows hice:
Iniciar sesión:
$ adb backup -apk -obb -shared -all -system -f bckp.ab
El servidor adb no está actualizado. asesinato...
Ahora desbloquee su dispositivo y confirme la operación de copia de seguridad.
... luego vuelve a poner todo en normal.
fuente
OK, así es como arreglé el mío.
Probé la solución de Hunter Perrin:
Pero acaba de regresar inmediatamente sin error, sin pantalla de respaldo en el teléfono.
A través de prueba y error, esto funcionó para mí:
fuente
Creo que tengo una solución para aquellos que usan 1.0.32:
ingrese una contraseña cuando se le solicite en la pantalla de Android
A pesar de que dice que usará la contraseña predeterminada si no ingresa ninguna, creo que no lo hace y adb 1.0.32 quizás no permita la creación de copias de seguridad sin cifrar.
Ingresar una contraseña funcionó para mí, luego terminé usando "Android Backup Extractor" (Warning Sourceforge) y "Java Cryptography Extension (JCE) Política de jurisdicción de fuerza ilimitada" para extraerlo en un archivo tar.
fuente
Me encontré con el problema inverso: 1.0.31 con un teléfono más nuevo (Android 7) también falla. 1.0.31 utiliza: como separador al pasar argumentos al teléfono. Como se
adb logcat -s BackupManagerService
muestra, el adb más nuevo en el teléfono tampoco puede manejar el estilo antiguo:02-19 01:59:44.330 1100 9830 W BackupManagerService: Unknown package com.gameloft.android.ANMP.GloftPOHM:-apk, skipping
afortunadamente, el adb más nuevo también acepta espacios como separador, por lo que encerrar los argumentos entre comillas dobles funciona, por ejemplo:adb.exe backup "com.gameloft.android.ANMP.GloftPOHM -apk" -f game-backup.ab
fuente