Cómo transferir manualmente toda la instalación de Whatsapp a otro dispositivo (de la manera difícil)

Estoy usando Whatsapp desde una máquina virtual desde que perdí mi teléfono y ahora necesito transferirlo a una nueva máquina virtual.

La manera fácil sería usar la función de copia de seguridad nativa de Whatsapp, pero está deshabilitada ya que la VM está conectada a través de Ethernet (y Android cree que es una conexión móvil). De hecho, la característica de "copia de seguridad local" no está disponible. Tengo un montón de mensajes que realmente no me gustaría perder.

Hay un módulo Xposed que podría falsificar una conexión Wifi en la VM de Android, pero en este punto realmente quiero hacer toda la transferencia localmente ya que mi Internet es dolorosamente lento en este momento.

Probé la función incorporada adb backup, solo para descubrir que está deshabilitada para Whatsapp y no se puede habilitar fácilmente (requiere descompilar el apkarchivo).

Entonces, ¿cómo puedo transferir manualmente los datos de la aplicación Whatspp al nuevo "dispositivo"? ¿Qué carpetas necesito copiar y qué archivos debo modificar para que la transferencia funcione sin problemas?

Por supuesto, tengo acceso completo a la raíz.

[Actualización] Ninguno de los siguientes trabajos:

  • Copiar todo el contenido de /data/data/com.whatsapp/databasesdespués de instalar Whatsapp, iniciar sesión y cerrarlo. Se bloqueará al abrir, sin ningún mensaje de error.

  • Copiando el mismo directorio, pero sin abrir Whatsapp e iniciar sesión después de la instalación. Mismo error que el anterior.

  • Copiando /data/data/com/whatsapp/databases/msgstore.dbdespués de instalar Whatsapp e iniciar sesión. Aparece un mensaje de error: "Algo salió mal con su historial de chat"

  • Copiando todo el /data/data/com.whatsappdirectorio, después de instalarlo y cerrarlo. Se bloqueará al abrir, sin ningún mensaje de error.

El concepto sería crear un archivo TAR de cualquier cosa en /data/data/com.whatsapp (para preservar los permisos y las propiedades). Luego, deberá instalar WhatsApp en la nueva máquina host y, por último, debe descomprimir el archivo creado anteriormente en el directorio /data/data/com.whatsapp de la nueva máquina, sobrescribiendo todos los archivos que ya estarán allá. Esto debería emular la operación de respaldo realizada por una aplicación dedicada, pero recordé que este es un mero concepto que aún no probé.
@DeathMaskSalesman Lo intenté, desafortunadamente eso no parece funcionar. La aplicación se bloquea cuando intento abrirla.
no tienes root? Si lo hace, podría usar alguna aplicación como Titanium Backup. Ha pasado un tiempo desde la última vez que usé Android, pero copiar aplicaciones, especialmente Whatsapp, difícilmente funcionará para aplicaciones como Whatsapp, Facebook o Messenger.

Respuestas (5)

También me encontré con el comportamiento de bloqueo al probar estos enfoques, pero @DeathMaskSalesman parece haber estado en el camino correcto: los bloqueos son de hecho un problema de permisos.

Si elimina WhatsApp por completo, lo vuelve a instalar y copia /data/data/com.whatsappy ajusta los permisos correctamente antes de iniciarlo por primera vez, entonces solo debería volver a verificar su número para que funcione. Esto funcionó para mí.

Para ajustar los permisos, primero use ls -lapara verificar los permisos en lo que se coloca en el /data/data/com.whatsappdirectorio durante la instalación, por ejemplo:

drwxrwx--x   3 u0_a105 u0_a105  4096 2018-07-14 00:55 cache

Luego use el nombre de usuario y el grupo (aquí ambos u0_a105) para cambiar el nombre de los archivos después de haberlos copiado en:

chown -R u0_a105:u0_a105 /data/data/com.whatsapp/*

Luego, WhatsApp debería iniciarse correctamente sin bloqueos y conservar la configuración, los mensajes y los archivos multimedia.

Gracias, intentaré esto la próxima vez. Tiene sentido y debería funcionar, estoy aceptando esta respuesta.
@Brune, esto suena como algo que vale la pena hacer como una pregunta separada.
¡Esto funciona perfectamente! Cuando solo muevo los datos, la aplicación falla si los dispositivos tienen nombres de usuarios/grupos diferentes del dispositivo original. Pero después de configurar el nombre de usuario y el grupo, funciona, gracias @JonathanW.

Si tiene root, puede usar TitaniumBackup para guardar los datos de Whatsapp.

Si no tiene root, puede cambiar a Whatsapp 2.11.431 (puede encontrarlo aquí ), que era la última versión con adb backupla función activada, y luego continuar con la copia de seguridad con adb ( instrucciones ).

THX a esta guía aquí de xda. Me encargaron de realizar una transferencia manual de todas mis conversaciones de Whatsapp (120000 mensajes: D).

Simple:

  1. Haga una copia de seguridad TWRP completa de su rom anterior si es posible + extráigala con adb o MTP desde su teléfono
  2. Copie con TWRP Terminal, TWRP Filemamanger, ADB o con su sistema en ejecución con acceso raíz a este archivo: /data/data/com.whatsapp/files/key
  3. Verifique el tamaño del archivo de ese archivo clave. Debe ser de 158 bytes. Si hay varios, elígelos todos. Pero luego necesitas el de 158 Bytes.
  4. Copie el archivo clave y la carpeta /sdcard/Whatsapp en su máquina local.
  5. En su nuevo teléfono: Instale Whatsapp y ábralo, pero no haga nada más. Deje que se abra y mantenga presionado el botón de encendido para apagar o reiniciar su recuperación TWRP.
  6. Dentro de TWRP, inserte la carpeta " Whatsapp " con todo su contenido en su carpeta /sdcard/ y presione el archivo clave (el que tiene 158 bytes) en /data/data/com.whatsapp/files/
  7. Inicie su nuevo teléfono nuevamente e inicie Whatsapp. Presione restaurar, si recibió el mensaje de que no encontró nada en "/sdcard/Whatsapp/backup", continúe y verifique su número. En mi caso, WA encontró la base de datos y restauró mis 120000 mensajes.

Si entiendo bien:

  • /data/data/com.whatsapp/files/key Es la clave de cifrado para su base de datos con todos sus mensajes.
  • /sdcard/Whatsapp/Databases/msgstore.db.crypt12 Debería ser su base de datos con todos sus mensajes. Podría haber algunos más con una fecha en el nombre del archivo. Estos deben ser más pequeños y más antiguos que msgstore.db.crypt12.
  • /sdcard/Whatsapp/Media Contiene medios :-P Si perdiera esto, solo los mensajes estarían allí y los medios no tendrían nada que vincular.

Ahora estoy feliz. Pude cambiar de Android 7 (LineageOS) a Android 8.1 (CarbonRom) sin usar más las aplicaciones de Google. Por lo tanto, no se necesitaría una copia de seguridad desde la nube. MicroG tiene un error con eso.

Puede encontrar datos de WhatsApp en el directorio /data/data/com.whatsapp, simplemente copie todo el contenido del subdirectorio databasesy adb pull /data/data/com.whatsapp/databasestransfiéralo a su nueva VM con adb push path/to/saved/databases/directory /data/data/com.whatsapp/databases, asegúrese de que el objetivo esté vacío.

Gracias por su respuesta. Supongo que primero debo instalar Whatsapp en la nueva VM, ¿verdad? ¿O debería crearlo /com.whatsapp/databasesmanualmente como primer paso?
Sí, debe instalar WhatsApp, luego registrar su cuenta como de costumbre, eso creará la com.whatsappcarpeta y su contenido.
Desafortunadamente no funcionó. Recibo el siguiente mensaje cuando intento abrir Whatsapp: "Algo salió mal con tu historial de chat".
¿Hay alguna diferencia entre las versiones de WhatsApp en ambas máquinas virtuales?
No, es la misma versión.
Ay. Algo salió mal. Funcionó anteriormente, no sé por qué, pero lo intenté en mi cuenta y obtuve el mismo resultado. Lo lamento :/
Aunque no creo que funcione, ya que es como copiar toda la com.whatsappcarpeta: se me ocurrió otra idea. Intente copiar (con mucho cuidado, haga una copia de seguridad de ambos archivos "clave") /data/data/com.whatsapp/files/keyen su VM de destino en la misma ubicación, y luego intente el procedimiento en la respuesta. (No puedo probar esto porque no tengo una clave de respaldo, pero es una teoría)

Solía ​​​​hacer una copia de seguridad solo del msgstore.db archivo ubicado /data/data/com.whatsapp/filesantes de la desinstalación y copiarlo en la misma carpeta después de la nueva instalación. Pero parece que esto ya no funciona desde la versión 2.19.xx.

De los comentarios, creo que keyel archivo es el nuevo factor aquí. Intentará.