51 votos

El respaldo de ADB crea un archivo de 0 bytes y pide la contraseña actual de respaldo a pesar de que nunca la configuré; "Error al establecer la contraseña" para la contraseña de respaldo de

El problema:

Cada vez que ejecuto la copia de seguridad de ADB, recibo un mensaje cerca del final de la pantalla de inicio que dice Comenzando copia de seguridad..., seguido de un mensaje que dice Copia de seguridad finalizada unos segundos más tarde a pesar de que estoy usando 17 GB de memoria del dispositivo, y el archivo de copia de seguridad resultante se crea con un tamaño de 0 bytes. No recibo mensajes de error, ni comentarios que indiquen que algo está mal, y mucho menos qué está mal. Parece que funciona, pero demasiado rápido, y el archivo de copia de seguridad está vacío.

El proceso:

  1. Confirmo que el dispositivo es reconocido por ADB usando el comando adb devices, y recibo la siguiente salida:

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

  3. Recibo el siguiente mensaje en la línea de comandos:

    Ahora desbloquea tu dispositivo y confirma la operación de copia de seguridad.

    ...y el siguiente mensaje en el teléfono:

    ingresar descripción de la imagen aquí

    No importa lo que haga aquí (detalles a continuación).

  4. Toque el botón Hacer copia de seguridad de mis datos (esquina inferior derecha).

  5. El teléfono vuelve a la pantalla de inicio y muestra el mensaje Comenzando copia de seguridad..., luego el mensaje de Copia de seguridad finalizada unos segundos después. Se crea un archivo de 0 bytes, llamado ya sea el predeterminado backup.ab o lo que sea que especifiqué con el interruptor -f.

El comando de copia de seguridad de ADB (utilizado en el paso 2):

He probado múltiples combinaciones de opciones, desde tan simple como

adb backup -all

hasta cosas como

adb backup -all -apk -s 8e1f368a -f 'C:\Data Files\PDA\Backups\ADB\GalaxyS4_20140919.ab'

También intenté agregar el interruptor -nosystem después de leer esto y esto, que indican que intentar incluir una copia de seguridad del sistema en un dispositivo sin root puede resultar en un archivo de 0 bytes, y que este interruptor debe ser utilizado. No cambia nada, el proceso sigue completándose en cuestión de segundos y sigo obteniendo un archivo de 0 bytes.

El prompt de contraseña de "Copia de seguridad completa" (paso 3):

Estoy bastante seguro de que nunca he configurado una contraseña de copia de seguridad antes. Nunca he tenido la ocasión de establecer esta contraseña o acceder a esta configuración de ninguna manera antes. Sin embargo, he probado todo lo siguiente:

  • Dejar en blanco ambas contraseñas
  • Dejar la "contraseña actual de copia de seguridad" en blanco e ingresar una nueva contraseña en el segundo recuadro
  • Ingresar el PIN de bloqueo de pantalla actual y todos los PIN que he usado en el pasado como la "contraseña actual de copia de seguridad".
  • Ingresar cada contraseña que se me ocurra que haya usado para cualquier cosa en este dispositivo

En todos los casos, el comportamiento es exactamente el mismo que se describe en el paso 5. No recibo errores ni ningún tipo de indicación de que algo está mal o que mis contraseñas son inválidas, y ninguna pista sobre si realmente espera una contraseña actual o si ese campo debería dejarse en blanco. (La captura de pantalla en esta respuesta y varios otros foros de soporte que he consultado parecen sugerir que el recuadro "contraseña actual de copia de seguridad" no se mostraría si no hay una contraseña actual, pero eso es solo una inferencia; nada aclara si realmente se requiere una contraseña actual.)

Sospecho que la contraseña que solicita puede ser la "Contraseña de copia de seguridad de escritorio" configurada en las opciones para desarrolladores:

ingresar descripción de la imagen aquí

Nunca he configurado esa contraseña antes. Si intento configurar una, recibo un mensaje que dice Error al establecer la contraseña de copia de seguridad.

Al buscar información sobre este error, me he encontrado con al menos un caso más 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 la copia de seguridad de ADB.

La mayoría de las personas que recibieron este mensaje sin haber configurado la contraseña antes dicen que la solución fue dejar en blanco la contraseña actual, pero lo intenté al principio y no funcionó. Encontré una pregunta de otra persona que encontró este problema y estaba seguro de que no había configurado la contraseña antes. Desafortunadamente, parece que nunca obtuvo 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, no puedo entender por qué ADB requeriría que ingreses una contraseña anterior para iniciar una nueva copia de seguridad. No estoy tratando de restaurar, sobrescribir o acceder de ninguna manera a datos previamente cifrados, por lo que incluso si hubiera configurado previamente una contraseña de cifrado para una copia de seguridad, no puedo imaginar por qué alguien pensaría que es una buena idea impedirte realizar una copia de seguridad de tu dispositivo si no recuerdas qué contraseña usaste para cifrar copias de seguridad en el pasado.

Información adicional:

Modelo: Samsung Galaxy S4 SCH-I545
Versión de Kernel: 3.4.0
Versión del sistema operativo: 4.4.2
Versión de las herramientas de Android SDK: 1.16
La depuración USB está habilitada.

Ten en cuenta que mi motivo 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 nandroid como Titanium Backup. Por lo tanto, cualquier sugerencia que implique rootear mi teléfono sería un callejón sin salida, no una solución. No hace falta decir que un restablecimiento de fábrica tampoco es una solución, ya que suprimiría el propósito completo de realizar la copia de seguridad.

El teléfono está configurado para sincronizarse con los servidores Exchange de mi empresa, y hay algunas políticas impuestas por el servidor. Había pensado que el dispositivo estaba cifrado cuando configuré por primera vez la sincronización con la cuenta de la empresa, pero aparentemente no está cifrado actualmente. De hecho, eso fue lo que inició esta cadena de eventos: estoy recibiendo un mensaje que me dice que necesito cifrar el dispositivo para poder seguir conectado a los servidores de la empresa. Quiero hacer una copia de seguridad nandroid antes de cifrar, lo que requiere rootear, y quiero usar la copia de seguridad de ADB antes de rootear.


* Sí, soy consciente de que se dice que Towelroot es seguro, pero preferiría no correr riesgos, y me gustaría resolver o al menos comprender este problema en caso de que surjan problemas relacionados en el futuro.

0 votos

He tenido varios problemas con ADB en una de mis tablets (rooteadas o no, en ambos casos) que eran similares (solo que al revés: mientras adb backup funcionaba bien, adb restore siempre fallaba). Resultó ser un problema de permisos (el fabricante había estropeado el ROM), por lo que adb restore no podía leer el archivo de respaldo una vez que se transfería al dispositivo. Fue un poco complicado de encontrar, y no estoy seguro si algo similar realmente es el caso aquí; pero podría valer la pena verificar.

2 votos

Para aquellos que terminen aquí con el mismo problema de 0 bytes: Tuve este problema porque una vez configuré la contraseña de escritorio en Configuración y la olvidé. Como el dispositivo está rooteado, seguí esta respuesta (la mía) y todo salió bien.

0 votos

También puedes consultar: code.google.com/p/android/issues/detail?id=47009 - Si has cifrado tu teléfono, es posible que necesites utilizar tu contraseña de cifrado como "contraseña actual" en todos los mensajes: ya sea en la pantalla de "Copia de seguridad completa" o en la de "Contraseña de copia de seguridad de escritorio".

33voto

Some Random Kid Puntos 66

Respuesta Corta

Intenta usar una versión anterior de adb. La versión 1.0.32 no funcionó para mí, pero la 1.0.31 sí.

Respuesta Larga

Acabo de encontrar este problema en un Nexus 5 con CyanogenMod 11 (basado en Android 4.4) usando la versión actual de las Herramientas de Plataforma y ADB (Android Debug Bridge versión 1.0.32 Revisión eac51f2bb6a8-android).

Usando adb logcat para ver los registros del dispositivo, noté que después de llamar a adb backup -apk -obb -shared -all -nosystem había algunas entradas de registro sospechosas:

V/BackupManagerService(  811): Solicitando copia de seguridad completa: apks=false obb=false shared=false all=false pkgs=[Ljava.lang.String;@4181ffc8
W/BackupManagerService(  811): Paquete desconocido  '-apk' '-obb' '-shared' '-all' '-nosystem', saltando

Donde parece que el dispositivo está interpretando las opciones de la línea de comandos como argumentos no opcionales, y produciendo un error porque no son nombres de paquetes instalados. Esto me hizo sospechar que el protocolo adb o las opciones de invocación del comando/servicio habían cambiado en el dispositivo en relación al host, así que probé una versión más antigua de adb y ¡voilà, funcionó!

Investigué un poco y encontré un cambio en Use escape_arg in "adb backup", que ahora hace que todos los argumentos sean entre comillas simples 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 el que encontraste el error. También sugeriría que el problema es mucho más extendido de lo que parece ser. Por lo tanto, tengo dudas de llamar a esto la causa, pero puede ser un buen punto de partida para una investigación más profunda.

2 votos

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.

0 votos

Parece que no funciona con todos los modelos. Mientras que hice una copia de seguridad completa de un Samsung S3 mini (Android 4.2) sin ningún problema, no pude hacerlo con una tablet, la cual tiene Android 4.0. Intenté con todas las versiones desde adb-r10 hasta adb-r23 (excluyendo adb-r15) sin éxito.

4 votos

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 adb backup '-noapk -noshared -all -nosystem' en lugar de adb backup -noapk -noshared -all -nosystem (dentro de un shell bash). Sin las comillas, obtengo mensajes de logcat como este: 'unknown backup flag -all:-nosystem:-noapk', 'no backup packages supplied and neither -shared nor -all given' y finalmente 'Finished.'.

16voto

KroniK907 Puntos 71

Basándonos en la respuesta de kevenoid, puede depender de la versión de adb que se esté ejecutando en el teléfono.

Puedes averiguar qué versión está ejecutando nativamente el teléfono haciendo lo siguiente:

Primero averigua qué versión estás ejecutando en tu escritorio

adb version

Luego abre la terminal en tu teléfono

adb shell

Una vez que la terminal esté abierta, puedes ejecutar

adb version

Luego sal de la terminal ejecutando

exit

Descubrí que mi teléfono estaba ejecutando la versión 1.0.31 y no la 1.0.32 (es un samsung note 2)

Intenté usar comillas o caracteres de escape como mostró Hunter, pero ninguno de esos funcionó desde la línea de comandos de Windows. Sin embargo, bajar de versió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

Otros plataformas:

0 votos

¿Existe alguna forma de actualizar la versión de adb en el teléfono?

1 votos

10voto

Lyubomyr Dutko Puntos 1266

Las otras respuestas sobre los argumentos de la línea de comandos que se citan son correctas. He encontrado que si se escapan los espacios entre los argumentos, funciona.

Así: adb backup -apk\ -shared\ -all\ -system

0 votos

Esta puede no ser la solución al problema de OP, pero es una mejor solución al problema de @Kevinoid que usar un ADB más antiguo, que no funcionó para mí.

0 votos

Esta es una duplicación de la respuesta de Kevinoid sin la justificación. Sin embargo, me funcionó bien y prefiero usar \ en lugar de '

1 votos

Esta solución funcionó para mí, no es necesario hacer downgrade a adb

7voto

TWiStErRob Puntos 136

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

$ adb version
Versión de Android Debug Bridge 1.0.35
Revisión 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 a /system/bin/bu y vuelca el archivo de respaldo en STDOUT (descriptor de archivo #1). Los parámetros son los mismos adb backup -> bu 1 backup . La salida se redirige a un archivo en el dispositivo y luego se puede extraer como cualquier archivo.

La única desventaja es que no puedes hacer una copia de seguridad completa si tu dispositivo está más de la mitad lleno. Esto se puede solucionar si tienes una ranura para tarjeta Sd 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.

0 votos

bu 1 copia de seguridad -apk nombre.del.paquete.de.la.aplicación > /sdcard/copia.de.seguridad.ab crea un archivo vacío de 47 bytes en mi caso.

2 votos

@user2284570 sí, tuve una experiencia similar (archivo ab vacío) recientemente en Android 9. Creo que en el pasado simplemente estaba roto (0 bytes), pero ahora han restringido aún más el acceso y también será eliminado, consulta link.medium.com/4edL3pBnolb

4voto

Matt Puntos 121

suspiro Lo siento mucho si este es el caso, y parece que tienes cuidado juzgando por tus capturas de pantalla y líneas de comando, pero descubrí con pesar los mismos síntomas y pensé en publicar por si acaso futuros descubridores llegan aquí. Resulta que adb es muy exigente con guiones simples vs. dobles en sus opciones. Para mí, los guiones dobles reprodujeron este caso exactamente: mismo aviso en el teléfono, mismo archivo de 0 bytes. Guiones simples aunque haya nombres de argumentos largos funcionaron a la perfección.

Por si acaso importa, mi teléfono es un Samsung Galazy Note 2 AT&T SGH-i317 con Android 5.1/Cyanogenmod 12.1.

3 votos

Estoy un poco confundido si esto debería ser publicado como respuesta o comentario en su lugar. El OP muestra que está usando un guion simple, no uno doble, por lo que tu respuesta probablemente no acertó. Admito que esta respuesta es informativa (agrega valor), pero no parece resolver el problema del OP.

0 votos

Esto resolvió mi problema.

0 votos

Por favor, publica tus líneas de comando actuales.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X