La copia de seguridad ADB crea un archivo de 0 bytes; solicita la contraseña de respaldo actual aunque nunca configuré una; "Error al establecer la contraseña" para la contraseña de copia de seguridad de escritorio

49

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:

  1. Confirmo que ADB reconoce el dispositivo mediante el adb devicescomando y recibo el siguiente resultado:

    List of devices attached
    8e1f368a        device
    
  2. Emito el comando de copia de seguridad ADB (detalles a seguir).

  3. 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:

    ingrese la descripción de la imagen aquí

    No importa lo que haga aquí (detalles a seguir).

  4. Toco el Back up my databotón (esquina inferior derecha).

  5. El teléfono vuelve a la pantalla de inicio y me muestra el Backup starting...mensaje, luego el Backup finishedmensaje 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 -nosysteminterruptor 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:

ingrese la descripción de la imagen aquí

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.

Adi Inbar
fuente
He tenido varios problemas con ADB en una de mis tabletas (rooteados o no, en ambos casos) que eran similares (al revés: aunque adb backupfuncionaba bien, adb restoresiempre fallaba). Resultó que era un problema de permiso (el fabricante había estropeado la ROM), por adb restorelo 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.
Izzy
2
Para aquellos que terminarían aquí con el mismo problema de 0bytes: tuve este problema porque una vez configuré la contraseña de escritorio en Configuración y la olvidé. Debido a que el dispositivo está rooteado, seguí esta respuesta (la mía) y todo salió bien.
Señor del fuego
También puede consultar: code.google.com/p/android/issues/detail?id=47009 - Si ha encriptado su teléfono, es posible que necesite usar su contraseña de encriptación como la "contraseña actual" en todas las indicaciones: en la pantalla "Copia de seguridad completa" o en la "Contraseña de copia de seguridad de escritorio".
Marco Leogrande
@AdiInbar, ¿alguna vez resolviste esto?
codecowboy
En realidad me tomó un tiempo encontrar esto. No sé si no estaba usando las palabras clave correctas, ¡pero esto es exactamente lo que necesitaba!
Thomas

Respuestas:

31

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 logcatpara ver los registros del dispositivo, noté que después de invocar adb backup -apk -obb -shared -all -nosystemhabía algunas entradas de registro sospechosas:

V/BackupManagerService(  811): Requesting full backup: apks=false obb=false shared=false all=false pkgs=[Ljava.lang.String;@4181ffc8
W/BackupManagerService(  811): Unknown package  '-apk' '-obb' '-shared' '-all' '-nosystem', skipping

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.

Kevinoid
fuente
2
Usar una versión anterior (1.0.31) resolvió mi problema. Esta pregunta stackoverflow.com/q/9555337/1741542 y especialmente esta respuesta stackoverflow.com/a/23022718/1741542 me ayudaron a encontrar una versión anterior, por ejemplo platform-tools_r20-linux.zip.
Olaf Dietsche
Sin embargo, parece que no funciona con todos los modelos. Si bien hice una copia de seguridad completa de un Samsung S3 mini (Android 4.2) sin ningún problema, no pude hacerlo con una tableta, que está en Android 4.0. Intenté todo desde adb-r10 hasta adb-r23 (excluyendo adb-r15) sin éxito.
Olaf Dietsche
44
Tuve un problema similar con adb 1.0.32 y un Nexus 5 (Android 6). Resolví esto citando explícitamente los argumentos de respaldo, es decir, ejecutando en adb backup '-noapk -noshared -all -nosystem'lugar de adb 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'.
maxschlepzig
Finalmente obtuve una copia de seguridad completa con Android 4.0 también. Estúpido, fue solo un reinicio de la tableta, lo que me puso en marcha.
Olaf Dietsche
55
¡Gracias! Por cierto, puedes descargar adb 1.0.31 para todas las plataformas aquí: ftp.mozilla.org/pub/labs/r2d2b2g
eWolf
16

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

adb version

Luego abra la carcasa de su teléfono

adb shell

Una vez que el shell está abierto, puede ejecutar

adb version

Luego salga del shell ejecutando

exit

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:

KroniK907
fuente
¿Hay alguna forma de actualizar la versión de adb en el teléfono?
Bin Wang
10

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

Hunter Perrin
fuente
Puede que esta no sea la solución al problema de OP, pero es una mejor solución para el problema de @ Kevinoid que usar un ADB anterior, que no funcionó para mí.
Hunter Perrin el
Este es un duplicado de la respuesta de Kevinoid sin la justificación. Sin embargo, funcionó bien para mí, y prefiero usar \ to '
Neil Mayhew
1
Esta solución funcionó para mí, no es necesario degradar adb
freethinker
Puedo confirmar la sospecha de @HunterPerrin de que este es un problema diferente porque intenté esto primero y no resolvió mi problema, pero en el segundo en que fui al adb 1.0.31 comenzó a copiarse correctamente
Sirenas
7

Ninguna de las soluciones me funcionó aquí, y no quiero degradar mis herramientas de SDK. Esto es lo que se me ocurrió: saltar adb backupen la computadora e ir directamente al dispositivo a través de adb shell.

$adb version
Android Debug Bridge version 1.0.35
Revision fc2a139a55f5-android

$ adb shell
shell@jflte:/ $ bu 1 backup -apk app.package.name > /sdcard/backup.ab
shell@jflte:/ $ exit

$adb pull /sdcard/backup.ab
[100%] /sdcard/backup.ab

Esto llama /system/bin/buy volca el archivo de copia de seguridad en STDOUT (descriptor de archivo # 1). Los parámetros son los mismos adb 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. bupuede escribir allí incluso en Android 4.4.2, porque es una aplicación del sistema. /mnt/extSdCard/backup.abfuncionó igual para mí que /sdcard.

TWiStErRob
fuente
4

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.

Mate
fuente
2
Estoy un poco confundido si esto debería publicarse como respuesta o comentario en su lugar. OP muestra que está usando un solo guión, no un doble guión, por lo que su respuesta probablemente no dio en el blanco. Admito que esta respuesta es informativa (valor agregado), pero no parece responder al problema de OP.
Andrew T.
Esto resolvió mi problema.
John Freeman
Por favor, publique sus líneas de comando reales.
RoboJ1M
2

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

  • daemon comenzó con éxito *

Ahora desbloquee su dispositivo y confirme la operación de copia de seguridad.

... luego vuelve a poner todo en normal.

eee
fuente
1

OK, así es como arreglé el mío.

Probé la solución de Hunter Perrin:

adb backup -apk\ -shared\ -all\ -system

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í:

adb backup -all\
RoboJ1M
fuente
1

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.

Catskul
fuente
1

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 BackupManagerServicemuestra, 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

cortar
fuente