Как вручную перенести всю установку WhatsApp на другое устройство (сложный способ)

Я использую Whatsapp с виртуальной машины, так как потерял телефон, и теперь мне нужно перенести его на новую виртуальную машину.

Простым способом было бы использовать функцию резервного копирования, встроенную в Whatsapp, но она отключена, поскольку виртуальная машина подключена через Ethernet (и Android считает, что это мобильное соединение). На самом деле сама функция "локального резервного копирования" недоступна. У меня есть тонна сообщений, которые я действительно не хотел бы потерять.

Есть модуль Xposed, который может имитировать соединение Wi-Fi на виртуальной машине Android, но на данный момент я действительно хочу выполнить всю передачу локально, так как мой интернет сейчас очень медленный.

Я попробовал встроенную adb backupфункцию, только чтобы узнать, что она отключена для WhatsApp и не может быть легко включена (требуется декомпиляция файла apk).

Итак, как я могу вручную перенести данные приложения Whatspp на новое «устройство»? Какие папки мне нужно скопировать и какие файлы нужно изменить, чтобы перенос работал без проблем?

Конечно, у меня есть полный root-доступ.

[Обновление] Ни одна из следующих работ:

  • Копирование всего содержимого /data/data/com.whatsapp/databasesпосле установки Whatsapp, авторизации и закрытия. При открытии вылетает без сообщения об ошибке.

  • Копирование той же директории, но без открытия Whatsapp и авторизации после установки. Та же ошибка, что и выше.

  • Копирование /data/data/com/whatsapp/databases/msgstore.dbпосле установки Whatsapp и входа в систему. Представлено сообщение об ошибке: «Что-то пошло не так с вашей историей чата»

  • Копирование всего /data/data/com.whatsappкаталога, после его установки и закрытия. При открытии вылетает без сообщения об ошибке.

Идея состоит в том, чтобы создать архив TAR чего-либо в /data/data/com.whatsapp (чтобы сохранить разрешения и права собственности). Затем вам нужно будет установить WhatsApp на новый хост-компьютер, и, наконец, вы должны распаковать ранее созданный архив в каталоге /data/data/com.whatsapp на новом компьютере, перезаписав все файлы, которые уже будут там. Это должно эмулировать операцию резервного копирования, выполняемую специальным приложением, но помните, что это всего лишь концепция, которую я еще не тестировал.
@DeathMaskSalesman Я пытался, к сожалению, это не работает. Приложение вылетает, когда я пытаюсь его открыть.
У тебя нет рута? Если вы это сделаете, вы можете использовать какое-нибудь приложение, например Titanium Backup. Прошло много времени с тех пор, как я в последний раз использовал Android, но копирование приложений, особенно Whatsapp, вряд ли будет работать для таких приложений, как Whatsapp, Facebook или Messenger.

Ответы (5)

Я тоже сталкивался со сбоями при использовании этих подходов, но @DeathMaskSalesman, похоже, был на правильном пути — сбои действительно связаны с проблемами прав доступа.

Если вы полностью удалите WhatsApp, переустановите его, скопируете /data/data/com.whatsappи правильно настроите разрешения перед его первым запуском, тогда для его работы потребуется просто повторно подтвердить ваш номер. Это сработало для меня.

Чтобы настроить разрешения, сначала используйте ls -laдля проверки разрешений на то, что помещается в /data/data/com.whatsappкаталог при установке, например:

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

Затем используйте имя пользователя и группу (здесь оба u0_a105), чтобы переименовать файлы после того, как вы их скопировали:

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

Затем WhatsApp должен запуститься без сбоев и сохранить настройки, сообщения и мультимедиа.

Спасибо, попробую в следующий раз. Имеет смысл и должен работать, я принимаю этот ответ.
@Brune, похоже, это стоит задать как отдельный вопрос.
Это работает отлично! Когда я перемещаю только данные, приложение аварийно завершает работу, если устройства имеют имена пользователей/групп, отличные от исходного устройства. Но после того, как я установил имя пользователя и группу, все заработало, спасибо @JonathanW.

Если у вас есть root, вы можете использовать TitaniumBackup для сохранения данных WhatsApp.

Если у вас нет root, вы можете перейти на Whatsapp 2.11.431 (вы можете найти его здесь ), которая была последней версией с adb backupактивированной функцией, а затем продолжить резервное копирование с помощью adb ( инструкции ).

Спасибо этому руководству от xda. Мне удалось вручную передать все мои разговоры в Whatsapp (120000 сообщений: D).

Простой:

  1. Сделайте полную резервную копию TWRP вашего старого рома, если это возможно + вытащите его с помощью adb или MTP со своего телефона.
  2. Скопируйте с помощью TWRP Terminal, TWRP Filemamanger, ADB или вашей работающей системы с root-доступом этот файл: /data/data/com.whatsapp/files/key
  3. Проверьте размер файла ключа. Должно быть 158 байт. Если их несколько, выберите их все. Но позже вам понадобится тот, у которого 158 байт.
  4. Скопируйте файл ключа и папку /sdcard/Whatsapp на свой локальный компьютер.
  5. На новом телефоне: установите WhatsApp и откройте его, но больше ничего не делайте. Позвольте ему открыться и удерживайте кнопку питания, чтобы выключить или перезапустить восстановление TWRP.
  6. В TWRP поместите папку " Whatsapp " со всем ее содержимым в папку /sdcard/ и поместите ключевой файл (тот, у которого 158 байт) в /data/data/com.whatsapp/files/
  7. Снова включите свой новый телефон и запустите WhatsApp. Нажмите «Восстановить», если вы получили сообщение о том, что ничего не найдено в «/sdcard/Whatsapp/backup», подтвердите свой номер. В моем случае WA нашел базу данных и восстановил мои 120000 сообщений.

Если я правильно понимаю:

  • /data/data/com.whatsapp/files/key Ключ шифрования для вашей базы данных со всеми вашими сообщениями.
  • /sdcard/Whatsapp/Databases/msgstore.db.crypt12 Должна быть вашей базой данных со всеми вашими сообщениями. Там может быть еще несколько с датой в имени файла. Они должны быть меньше и старше, чем msgstore.db.crypt12.
  • /sdcard/Whatsapp/Media Содержит мультимедиа :-P Если вы потеряете это, там будут только сообщения, а на мультимедиа просто нечего будет связать.

Я счастлив сейчас. Мне удалось перейти с Android 7 (LineageOS) на Android 8.1 (CarbonRom) без использования Google-Apps. Таким образом, резервное копирование из облака не потребуется. У MicroG есть ошибка с этим.

Вы можете найти данные WhatsApp в каталоге /data/data/com.whatsapp, просто скопируйте все содержимое подкаталога databasesс помощью adb pull /data/data/com.whatsapp/databasesи перенесите его на новую виртуальную машину с помощью adb push path/to/saved/databases/directory /data/data/com.whatsapp/databases, убедитесь, что цель пуста.

Спасибо за ваш ответ. Я предполагаю, что я должен сначала установить Whatsapp на новую виртуальную машину, верно? Или я должен создать /com.whatsapp/databasesвручную в качестве первого шага?
Да, вы должны установить WhatsApp, а затем зарегистрировать свою учетную запись, как обычно, чтобы создать папку com.whatsappи ее содержимое.
К сожалению, это не сработало. Я получаю следующее сообщение при попытке открыть WhatsApp: «Что-то пошло не так с вашей историей чата».
Есть ли разница между версиями WhatsApp на обеих виртуальных машинах?
Нет, это та же версия.
Ой. Что-то пошло не так. Раньше это работало, не знаю почему, но я только что попробовал это на своем аккаунте, и у меня был тот же результат. Мне жаль :/
Хотя я не думаю, что это может сработать, так как это похоже на копирование всей com.whatsappпапки: у меня была другая идея. Попробуйте скопировать (очень осторожно, сделайте резервную копию обоих «ключевых» файлов) /data/data/com.whatsapp/files/keyна целевую виртуальную машину в том же месте, а затем попробуйте процедуру, описанную в ответе. (Я не могу проверить это, потому что у меня нет резервного ключа, но это теория)

Раньше я делал резервную копию только msgstore.db файла, расположенного в /data/data/com.whatsapp/filesперед удалением, и копировал его в ту же папку после новой установки. Но это больше не работает с версии 2.19.xx.

Судя по комментариям, я думаю, что keyфайл здесь является новым фактором. Попытаюсь.